From 062de766617d4552c4eb9019b040e0555931a4ca Mon Sep 17 00:00:00 2001 From: Kendrick Tan Date: Fri, 3 Apr 2020 15:34:52 +1000 Subject: [PATCH 1/4] added another address --- .../artifacts/AddressRegistry.json | 2 +- .../artifacts/CompoundBase.json | 192 +- .../smart-contracts/artifacts/DACProxy.json | 2388 +- .../artifacts/DACProxyFactory.json | 1490 +- .../artifacts/DedgeCompoundManager.json | 318 +- .../artifacts/DedgeExitManager.json | 18340 +++++++--------- .../artifacts/DedgeGeneralManager.json | 334 +- .../artifacts/DedgeMakerManager.json | 3586 +-- .../smart-contracts/artifacts/ICEther.json | 130 +- .../smart-contracts/artifacts/ICToken.json | 314 +- .../smart-contracts/artifacts/Migrations.json | 2 +- .../smart-contracts/src/proxies/DACProxy.sol | 9 +- 12 files changed, 12593 insertions(+), 14512 deletions(-) diff --git a/packages/smart-contracts/artifacts/AddressRegistry.json b/packages/smart-contracts/artifacts/AddressRegistry.json index ebd7e06..85d1e10 100644 --- a/packages/smart-contracts/artifacts/AddressRegistry.json +++ b/packages/smart-contracts/artifacts/AddressRegistry.json @@ -2059,7 +2059,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:19:27.873Z", + "updatedAt": "2020-04-03T04:49:15.507Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/CompoundBase.json b/packages/smart-contracts/artifacts/CompoundBase.json index 129debb..4023b2b 100644 --- a/packages/smart-contracts/artifacts/CompoundBase.json +++ b/packages/smart-contracts/artifacts/CompoundBase.json @@ -376,9 +376,9 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveCToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"approveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrowThroughProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarketsAndApproveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalfThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"supplyCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"borrowCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"supplyETH\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyETHAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":\"CompoundBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0x3c1fd10b8372a9605ad8c50f4412ec551c2a6cd1c766119a38d30b972285ace5\",\"urls\":[\"bzz-raw://6cab8f4140440f85d86faec88351efb196e3c628bc16b0cf808637efe6814e5a\",\"dweb:/ipfs/QmPKFwz4Aw4SoEZ9oXCdwexULcDaLX8HV3f3nEQXbskakU\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0x1fdd5a3473065d6f14bb74dd57431257d1a6b3d400472fe22e616665fb71d9fa\",\"urls\":[\"bzz-raw://9f75f98e1fcb3b0618bfc4d7e07dfa313250fb3e5012c5101e3e5589b013d6f7\",\"dweb:/ipfs/QmZduo9rqcHV9soppn4eJ9EM3UessLwTpBv3dcx5QWzyzj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":{\"keccak256\":\"0xfe69c2a9adaca0cdcfb06df5a2a2d99b5fd2d507e85379d7e412e218c523583a\",\"urls\":[\"bzz-raw://525284cba89cdd1c6b146ec5774e284b6b0af8639cfad96c059e700a9e727ca2\",\"dweb:/ipfs/QmSBBvdmCWkfFscFKWK6oMYL7F4HQ2aZPxJhEX5p3W4ivp\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50611f00806100206000396000f3fe6080604052600436106101145760003560e01c806375d40945116100a0578063ba59154f11610064578063ba59154f1461068b578063c2998238146106d9578063d2f70c401461079e578063d882dc6c146107f9578063f2b9fdb81461084757610114565b806375d40945146104ae5780637720cc871461052657806396294178146105945780639a22a1b9146105e2578063abdb5ea81461063d57610114565b806341ec5cc4116100e757806341ec5cc41461033f5780634907b8fc1461038d5780634b8a35291461039757806359086a5e146103f257806367600cc21461046057610114565b80630b4e0630146101195780631e9a6950146101675780632d8af543146101b55780633dc4d99a1461027a575b600080fd5b6101656004803603604081101561012f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610895565b005b6101b36004803603604081101561017d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a85565b005b3480156101c157600080fd5b50610278600480360360208110156101d857600080fd5b81019080803590602001906401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184602083028401116401000000008311171561022957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b8c565b005b34801561028657600080fd5b5061033d6004803603602081101561029d57600080fd5b81019080803590602001906401000000008111156102ba57600080fd5b8201836020820111156102cc57600080fd5b803590602001918460208302840111640100000000831117156102ee57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ba1565b005b61038b6004803603604081101561035557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c59565b005b610395610c6f565b005b3480156103a357600080fd5b506103f0600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce6565b005b61045e6004803603606081101561040857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ded565b005b6104ac6004803603604081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ffc565b005b610524600480360360808110156104c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611015565b005b6105926004803603606081101561053c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061102f565b005b6105e0600480360360408110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611093565b005b3480156105ee57600080fd5b5061063b6004803603604081101561060557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117d565b005b6106896004803603604081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611196565b005b6106d7600480360360408110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611356565b005b3480156106e557600080fd5b5061079c600480360360208110156106fc57600080fd5b810190808035906020019064010000000081111561071957600080fd5b82018360208201111561072b57600080fd5b8035906020019184602083028401116401000000008311171561074d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506113b8565b005b3480156107aa57600080fd5b506107f7600480360360408110156107c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e3565b005b6108456004803603604081101561080f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a8565b005b6108936004803603604081101561085d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c1565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b81019080805190602001909291905050509050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109a5576109a433308585611995565b5b6109af83836117c1565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d6020811015610a5857600080fd5b81019080805190602001909291905050509050610a7f8433610a7a8486611b89565b611c12565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610ada57600080fd5b505af1158015610aee573d6000803e3d6000fd5b505050506040513d6020811015610b0457600080fd5b810190808051906020019092919050505014610b88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c6564000081525060200191505060405180910390fd5b5050565b610b95816113b8565b610b9e81610ba1565b50565b60008090505b8151811015610c5557734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610be757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c4857610c47828281518110610c1957fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115e3565b5b8080600101915050610ba7565b5050565b610c61610c6f565b610c6b8282610ce6565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3b57600080fd5b505af1158015610d4f573d6000803e3d6000fd5b505050506040513d6020811015610d6557600080fd5b810190808051906020019092919050505014610de9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c6564000081525060200191505060405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed2578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610eb457600080fd5b505af1158015610ec8573d6000803e3d6000fd5b5050505050610ff7565b610edc82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050506040513d6020811015610f8f57600080fd5b810190808051906020019092919050505014610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611ea96023913960400191505060405180910390fd5b5b505050565b6110068282611093565b611011823383611c12565b5050565b61101f84846117c1565b6110298282610ce6565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110835761108233308484611995565b5b61108e838383610ded565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156110e857600080fd5b505af11580156110fc573d6000803e3d6000fd5b505050506040513d602081101561111257600080fd5b810190808051906020019092919050505014611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e806029913960400191505060405180910390fd5b5050565b6111878282610ce6565b611192823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b5050505050611352565b61124e82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156112a357600080fd5b505af11580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b810190808051906020019092919050505014611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c656400000081525060200191505060405180910390fd5b5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113aa576113a933308484611995565b5b6113b48282611196565b5050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b8381101561143d578082015181840152602081019050611422565b5050505090500192505050600060405180830381600087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156114a057600080fd5b81019080805160405193929190846401000000008211156114c057600080fd5b838201915060208201858111156114d657600080fd5b82518660208202830111640100000000821117156114f357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561152a57808201518184015260208101905061150f565b50505050905001604052505050905060008090505b81518110156115de57600082828151811061155657fe5b6020026020010151146115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c6564000081525060200191505060405180910390fd5b808060010191505061153f565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561162b57600080fd5b505afa15801561163f573d6000803e3d6000fd5b505050506040513d602081101561165557600080fd5b81019080805190602001909291905050509050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b505050506040513d602081101561171d57600080fd5b81019080805190602001909291905050501515146117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c656481525060200191505060405180910390fd5b505050565b6117b28282610a85565b6117bd823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561188357734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561186557600080fd5b505af1158015611879573d6000803e3d6000fd5b5050505050611991565b61188d82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b505050506040513d602081101561190c57600080fd5b810190808051906020019092919050505014611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c6564000081525060200191505060405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d6020811015611a0757600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ad557600080fd5b505af1158015611ae9573d6000803e3d6000fd5b505050506040513d6020811015611aff57600080fd5b8101908080519060200190929190505050611b82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c6564000081525060200191505060405180910390fd5b5050505050565b600082821115611c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736166652d6d6174682d7375622d6661696c656400000000000000000000000081525060200191505060405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc5578173ffffffffffffffffffffffffffffffffffffffff168160405180600001905060006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b505050611e7a565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611d0b57600080fd5b505afa158015611d1f573d6000803e3d6000fd5b505050506040513d6020811015611d3557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611dcc57600080fd5b505af1158015611de0573d6000803e3d6000fd5b505050506040513d6020811015611df657600080fd5b8101908080519060200190929190505050611e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f636d706e642d6d67722d7472616e736665722d6661696c65640000000000000081525060200191505060405180910390fd5b5b50505056fe636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661696c6564a265627a7a723158204c075f90a7ad9b820917cd544a898d5afee879a0161e6eef33bb67be8370103064736f6c63430005100032", - "deployedBytecode": "0x6080604052600436106101145760003560e01c806375d40945116100a0578063ba59154f11610064578063ba59154f1461068b578063c2998238146106d9578063d2f70c401461079e578063d882dc6c146107f9578063f2b9fdb81461084757610114565b806375d40945146104ae5780637720cc871461052657806396294178146105945780639a22a1b9146105e2578063abdb5ea81461063d57610114565b806341ec5cc4116100e757806341ec5cc41461033f5780634907b8fc1461038d5780634b8a35291461039757806359086a5e146103f257806367600cc21461046057610114565b80630b4e0630146101195780631e9a6950146101675780632d8af543146101b55780633dc4d99a1461027a575b600080fd5b6101656004803603604081101561012f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610895565b005b6101b36004803603604081101561017d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a85565b005b3480156101c157600080fd5b50610278600480360360208110156101d857600080fd5b81019080803590602001906401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184602083028401116401000000008311171561022957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b8c565b005b34801561028657600080fd5b5061033d6004803603602081101561029d57600080fd5b81019080803590602001906401000000008111156102ba57600080fd5b8201836020820111156102cc57600080fd5b803590602001918460208302840111640100000000831117156102ee57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ba1565b005b61038b6004803603604081101561035557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c59565b005b610395610c6f565b005b3480156103a357600080fd5b506103f0600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce6565b005b61045e6004803603606081101561040857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ded565b005b6104ac6004803603604081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ffc565b005b610524600480360360808110156104c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611015565b005b6105926004803603606081101561053c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061102f565b005b6105e0600480360360408110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611093565b005b3480156105ee57600080fd5b5061063b6004803603604081101561060557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117d565b005b6106896004803603604081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611196565b005b6106d7600480360360408110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611356565b005b3480156106e557600080fd5b5061079c600480360360208110156106fc57600080fd5b810190808035906020019064010000000081111561071957600080fd5b82018360208201111561072b57600080fd5b8035906020019184602083028401116401000000008311171561074d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506113b8565b005b3480156107aa57600080fd5b506107f7600480360360408110156107c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e3565b005b6108456004803603604081101561080f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a8565b005b6108936004803603604081101561085d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c1565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b81019080805190602001909291905050509050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109a5576109a433308585611995565b5b6109af83836117c1565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d6020811015610a5857600080fd5b81019080805190602001909291905050509050610a7f8433610a7a8486611b89565b611c12565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610ada57600080fd5b505af1158015610aee573d6000803e3d6000fd5b505050506040513d6020811015610b0457600080fd5b810190808051906020019092919050505014610b88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c6564000081525060200191505060405180910390fd5b5050565b610b95816113b8565b610b9e81610ba1565b50565b60008090505b8151811015610c5557734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610be757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c4857610c47828281518110610c1957fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115e3565b5b8080600101915050610ba7565b5050565b610c61610c6f565b610c6b8282610ce6565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3b57600080fd5b505af1158015610d4f573d6000803e3d6000fd5b505050506040513d6020811015610d6557600080fd5b810190808051906020019092919050505014610de9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c6564000081525060200191505060405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed2578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610eb457600080fd5b505af1158015610ec8573d6000803e3d6000fd5b5050505050610ff7565b610edc82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050506040513d6020811015610f8f57600080fd5b810190808051906020019092919050505014610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611ea96023913960400191505060405180910390fd5b5b505050565b6110068282611093565b611011823383611c12565b5050565b61101f84846117c1565b6110298282610ce6565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110835761108233308484611995565b5b61108e838383610ded565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156110e857600080fd5b505af11580156110fc573d6000803e3d6000fd5b505050506040513d602081101561111257600080fd5b810190808051906020019092919050505014611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e806029913960400191505060405180910390fd5b5050565b6111878282610ce6565b611192823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b5050505050611352565b61124e82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156112a357600080fd5b505af11580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b810190808051906020019092919050505014611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c656400000081525060200191505060405180910390fd5b5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113aa576113a933308484611995565b5b6113b48282611196565b5050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b8381101561143d578082015181840152602081019050611422565b5050505090500192505050600060405180830381600087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156114a057600080fd5b81019080805160405193929190846401000000008211156114c057600080fd5b838201915060208201858111156114d657600080fd5b82518660208202830111640100000000821117156114f357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561152a57808201518184015260208101905061150f565b50505050905001604052505050905060008090505b81518110156115de57600082828151811061155657fe5b6020026020010151146115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c6564000081525060200191505060405180910390fd5b808060010191505061153f565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561162b57600080fd5b505afa15801561163f573d6000803e3d6000fd5b505050506040513d602081101561165557600080fd5b81019080805190602001909291905050509050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b505050506040513d602081101561171d57600080fd5b81019080805190602001909291905050501515146117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c656481525060200191505060405180910390fd5b505050565b6117b28282610a85565b6117bd823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561188357734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561186557600080fd5b505af1158015611879573d6000803e3d6000fd5b5050505050611991565b61188d82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b505050506040513d602081101561190c57600080fd5b810190808051906020019092919050505014611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c6564000081525060200191505060405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d6020811015611a0757600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ad557600080fd5b505af1158015611ae9573d6000803e3d6000fd5b505050506040513d6020811015611aff57600080fd5b8101908080519060200190929190505050611b82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c6564000081525060200191505060405180910390fd5b5050505050565b600082821115611c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736166652d6d6174682d7375622d6661696c656400000000000000000000000081525060200191505060405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc5578173ffffffffffffffffffffffffffffffffffffffff168160405180600001905060006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b505050611e7a565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611d0b57600080fd5b505afa158015611d1f573d6000803e3d6000fd5b505050506040513d6020811015611d3557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611dcc57600080fd5b505af1158015611de0573d6000803e3d6000fd5b505050506040513d6020811015611df657600080fd5b8101908080519060200190929190505050611e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f636d706e642d6d67722d7472616e736665722d6661696c65640000000000000081525060200191505060405180910390fd5b5b50505056fe636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661696c6564a265627a7a723158204c075f90a7ad9b820917cd544a898d5afee879a0161e6eef33bb67be8370103064736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveCToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"approveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrowThroughProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarketsAndApproveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalfThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"supplyCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"borrowCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"supplyETH\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyETHAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":\"CompoundBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":{\"keccak256\":\"0xfe69c2a9adaca0cdcfb06df5a2a2d99b5fd2d507e85379d7e412e218c523583a\",\"urls\":[\"bzz-raw://525284cba89cdd1c6b146ec5774e284b6b0af8639cfad96c059e700a9e727ca2\",\"dweb:/ipfs/QmSBBvdmCWkfFscFKWK6oMYL7F4HQ2aZPxJhEX5p3W4ivp\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50611f00806100206000396000f3fe6080604052600436106101145760003560e01c806375d40945116100a0578063ba59154f11610064578063ba59154f1461068b578063c2998238146106d9578063d2f70c401461079e578063d882dc6c146107f9578063f2b9fdb81461084757610114565b806375d40945146104ae5780637720cc871461052657806396294178146105945780639a22a1b9146105e2578063abdb5ea81461063d57610114565b806341ec5cc4116100e757806341ec5cc41461033f5780634907b8fc1461038d5780634b8a35291461039757806359086a5e146103f257806367600cc21461046057610114565b80630b4e0630146101195780631e9a6950146101675780632d8af543146101b55780633dc4d99a1461027a575b600080fd5b6101656004803603604081101561012f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610895565b005b6101b36004803603604081101561017d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a85565b005b3480156101c157600080fd5b50610278600480360360208110156101d857600080fd5b81019080803590602001906401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184602083028401116401000000008311171561022957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b8c565b005b34801561028657600080fd5b5061033d6004803603602081101561029d57600080fd5b81019080803590602001906401000000008111156102ba57600080fd5b8201836020820111156102cc57600080fd5b803590602001918460208302840111640100000000831117156102ee57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ba1565b005b61038b6004803603604081101561035557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c59565b005b610395610c6f565b005b3480156103a357600080fd5b506103f0600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce6565b005b61045e6004803603606081101561040857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ded565b005b6104ac6004803603604081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ffc565b005b610524600480360360808110156104c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611015565b005b6105926004803603606081101561053c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061102f565b005b6105e0600480360360408110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611093565b005b3480156105ee57600080fd5b5061063b6004803603604081101561060557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117d565b005b6106896004803603604081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611196565b005b6106d7600480360360408110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611356565b005b3480156106e557600080fd5b5061079c600480360360208110156106fc57600080fd5b810190808035906020019064010000000081111561071957600080fd5b82018360208201111561072b57600080fd5b8035906020019184602083028401116401000000008311171561074d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506113b8565b005b3480156107aa57600080fd5b506107f7600480360360408110156107c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e3565b005b6108456004803603604081101561080f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a8565b005b6108936004803603604081101561085d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c1565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b81019080805190602001909291905050509050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109a5576109a433308585611995565b5b6109af83836117c1565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d6020811015610a5857600080fd5b81019080805190602001909291905050509050610a7f8433610a7a8486611b89565b611c12565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610ada57600080fd5b505af1158015610aee573d6000803e3d6000fd5b505050506040513d6020811015610b0457600080fd5b810190808051906020019092919050505014610b88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c6564000081525060200191505060405180910390fd5b5050565b610b95816113b8565b610b9e81610ba1565b50565b60008090505b8151811015610c5557734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610be757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c4857610c47828281518110610c1957fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115e3565b5b8080600101915050610ba7565b5050565b610c61610c6f565b610c6b8282610ce6565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3b57600080fd5b505af1158015610d4f573d6000803e3d6000fd5b505050506040513d6020811015610d6557600080fd5b810190808051906020019092919050505014610de9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c6564000081525060200191505060405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed2578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610eb457600080fd5b505af1158015610ec8573d6000803e3d6000fd5b5050505050610ff7565b610edc82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050506040513d6020811015610f8f57600080fd5b810190808051906020019092919050505014610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611ea96023913960400191505060405180910390fd5b5b505050565b6110068282611093565b611011823383611c12565b5050565b61101f84846117c1565b6110298282610ce6565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110835761108233308484611995565b5b61108e838383610ded565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156110e857600080fd5b505af11580156110fc573d6000803e3d6000fd5b505050506040513d602081101561111257600080fd5b810190808051906020019092919050505014611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e806029913960400191505060405180910390fd5b5050565b6111878282610ce6565b611192823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b5050505050611352565b61124e82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156112a357600080fd5b505af11580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b810190808051906020019092919050505014611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c656400000081525060200191505060405180910390fd5b5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113aa576113a933308484611995565b5b6113b48282611196565b5050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b8381101561143d578082015181840152602081019050611422565b5050505090500192505050600060405180830381600087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156114a057600080fd5b81019080805160405193929190846401000000008211156114c057600080fd5b838201915060208201858111156114d657600080fd5b82518660208202830111640100000000821117156114f357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561152a57808201518184015260208101905061150f565b50505050905001604052505050905060008090505b81518110156115de57600082828151811061155657fe5b6020026020010151146115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c6564000081525060200191505060405180910390fd5b808060010191505061153f565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561162b57600080fd5b505afa15801561163f573d6000803e3d6000fd5b505050506040513d602081101561165557600080fd5b81019080805190602001909291905050509050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b505050506040513d602081101561171d57600080fd5b81019080805190602001909291905050501515146117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c656481525060200191505060405180910390fd5b505050565b6117b28282610a85565b6117bd823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561188357734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561186557600080fd5b505af1158015611879573d6000803e3d6000fd5b5050505050611991565b61188d82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b505050506040513d602081101561190c57600080fd5b810190808051906020019092919050505014611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c6564000081525060200191505060405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d6020811015611a0757600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ad557600080fd5b505af1158015611ae9573d6000803e3d6000fd5b505050506040513d6020811015611aff57600080fd5b8101908080519060200190929190505050611b82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c6564000081525060200191505060405180910390fd5b5050505050565b600082821115611c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736166652d6d6174682d7375622d6661696c656400000000000000000000000081525060200191505060405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc5578173ffffffffffffffffffffffffffffffffffffffff168160405180600001905060006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b505050611e7a565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611d0b57600080fd5b505afa158015611d1f573d6000803e3d6000fd5b505050506040513d6020811015611d3557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611dcc57600080fd5b505af1158015611de0573d6000803e3d6000fd5b505050506040513d6020811015611df657600080fd5b8101908080519060200190929190505050611e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f636d706e642d6d67722d7472616e736665722d6661696c65640000000000000081525060200191505060405180910390fd5b5b50505056fe636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661696c6564a265627a7a72315820a9bfd97733a10b91a2f559cf6f93219aa428226cf05b80e0f3cb5e67c61129eb64736f6c63430005100032", + "deployedBytecode": "0x6080604052600436106101145760003560e01c806375d40945116100a0578063ba59154f11610064578063ba59154f1461068b578063c2998238146106d9578063d2f70c401461079e578063d882dc6c146107f9578063f2b9fdb81461084757610114565b806375d40945146104ae5780637720cc871461052657806396294178146105945780639a22a1b9146105e2578063abdb5ea81461063d57610114565b806341ec5cc4116100e757806341ec5cc41461033f5780634907b8fc1461038d5780634b8a35291461039757806359086a5e146103f257806367600cc21461046057610114565b80630b4e0630146101195780631e9a6950146101675780632d8af543146101b55780633dc4d99a1461027a575b600080fd5b6101656004803603604081101561012f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610895565b005b6101b36004803603604081101561017d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a85565b005b3480156101c157600080fd5b50610278600480360360208110156101d857600080fd5b81019080803590602001906401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184602083028401116401000000008311171561022957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b8c565b005b34801561028657600080fd5b5061033d6004803603602081101561029d57600080fd5b81019080803590602001906401000000008111156102ba57600080fd5b8201836020820111156102cc57600080fd5b803590602001918460208302840111640100000000831117156102ee57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ba1565b005b61038b6004803603604081101561035557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c59565b005b610395610c6f565b005b3480156103a357600080fd5b506103f0600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce6565b005b61045e6004803603606081101561040857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ded565b005b6104ac6004803603604081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ffc565b005b610524600480360360808110156104c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611015565b005b6105926004803603606081101561053c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061102f565b005b6105e0600480360360408110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611093565b005b3480156105ee57600080fd5b5061063b6004803603604081101561060557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117d565b005b6106896004803603604081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611196565b005b6106d7600480360360408110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611356565b005b3480156106e557600080fd5b5061079c600480360360208110156106fc57600080fd5b810190808035906020019064010000000081111561071957600080fd5b82018360208201111561072b57600080fd5b8035906020019184602083028401116401000000008311171561074d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506113b8565b005b3480156107aa57600080fd5b506107f7600480360360408110156107c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e3565b005b6108456004803603604081101561080f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a8565b005b6108936004803603604081101561085d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c1565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b81019080805190602001909291905050509050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109a5576109a433308585611995565b5b6109af83836117c1565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d6020811015610a5857600080fd5b81019080805190602001909291905050509050610a7f8433610a7a8486611b89565b611c12565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610ada57600080fd5b505af1158015610aee573d6000803e3d6000fd5b505050506040513d6020811015610b0457600080fd5b810190808051906020019092919050505014610b88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c6564000081525060200191505060405180910390fd5b5050565b610b95816113b8565b610b9e81610ba1565b50565b60008090505b8151811015610c5557734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610be757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c4857610c47828281518110610c1957fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115e3565b5b8080600101915050610ba7565b5050565b610c61610c6f565b610c6b8282610ce6565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3b57600080fd5b505af1158015610d4f573d6000803e3d6000fd5b505050506040513d6020811015610d6557600080fd5b810190808051906020019092919050505014610de9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c6564000081525060200191505060405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed2578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610eb457600080fd5b505af1158015610ec8573d6000803e3d6000fd5b5050505050610ff7565b610edc82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050506040513d6020811015610f8f57600080fd5b810190808051906020019092919050505014610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611ea96023913960400191505060405180910390fd5b5b505050565b6110068282611093565b611011823383611c12565b5050565b61101f84846117c1565b6110298282610ce6565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110835761108233308484611995565b5b61108e838383610ded565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156110e857600080fd5b505af11580156110fc573d6000803e3d6000fd5b505050506040513d602081101561111257600080fd5b810190808051906020019092919050505014611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e806029913960400191505060405180910390fd5b5050565b6111878282610ce6565b611192823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b5050505050611352565b61124e82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156112a357600080fd5b505af11580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b810190808051906020019092919050505014611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c656400000081525060200191505060405180910390fd5b5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113aa576113a933308484611995565b5b6113b48282611196565b5050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b8381101561143d578082015181840152602081019050611422565b5050505090500192505050600060405180830381600087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156114a057600080fd5b81019080805160405193929190846401000000008211156114c057600080fd5b838201915060208201858111156114d657600080fd5b82518660208202830111640100000000821117156114f357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561152a57808201518184015260208101905061150f565b50505050905001604052505050905060008090505b81518110156115de57600082828151811061155657fe5b6020026020010151146115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c6564000081525060200191505060405180910390fd5b808060010191505061153f565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561162b57600080fd5b505afa15801561163f573d6000803e3d6000fd5b505050506040513d602081101561165557600080fd5b81019080805190602001909291905050509050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b505050506040513d602081101561171d57600080fd5b81019080805190602001909291905050501515146117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c656481525060200191505060405180910390fd5b505050565b6117b28282610a85565b6117bd823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561188357734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561186557600080fd5b505af1158015611879573d6000803e3d6000fd5b5050505050611991565b61188d82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b505050506040513d602081101561190c57600080fd5b810190808051906020019092919050505014611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c6564000081525060200191505060405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d6020811015611a0757600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ad557600080fd5b505af1158015611ae9573d6000803e3d6000fd5b505050506040513d6020811015611aff57600080fd5b8101908080519060200190929190505050611b82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c6564000081525060200191505060405180910390fd5b5050505050565b600082821115611c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736166652d6d6174682d7375622d6661696c656400000000000000000000000081525060200191505060405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc5578173ffffffffffffffffffffffffffffffffffffffff168160405180600001905060006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b505050611e7a565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611d0b57600080fd5b505afa158015611d1f573d6000803e3d6000fd5b505050506040513d6020811015611d3557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611dcc57600080fd5b505af1158015611de0573d6000803e3d6000fd5b505050506040513d6020811015611df657600080fd5b8101908080519060200190929190505050611e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f636d706e642d6d67722d7472616e736665722d6661696c65640000000000000081525060200191505060405180910390fd5b5b50505056fe636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661696c6564a265627a7a72315820a9bfd97733a10b91a2f559cf6f93219aa428226cf05b80e0f3cb5e67c61129eb64736f6c63430005100032", "sourceMap": "343:6695:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;343:6695:16;;;;;;;", "deployedSourceMap": "343:6695:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:690;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5264:690:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4686:167;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4686:167:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2581:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2581:157:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2581:157:16;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2581:157:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2581:157:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2581:157:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2581:157:16;;;;;;;;;;;;;;;:::i;:::-;;2252:323;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2252:323:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2252:323:16;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2252:323:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2252:323:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2252:323:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2252:323:16;;;;;;;;;;;;;;;:::i;:::-;;3710:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3710:227:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2744:99;;;:::i;:::-;;3284:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3284:159:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3284:159:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4283:397;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4283:397:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6836:200;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6836:200:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3449:255;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3449:255:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6206:282;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6206:282:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4859:198;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4859:198:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6494:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6494:150:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6494:150:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3943:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3943:334:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5960:240;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5960:240:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1466:429;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1466:429:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1466:429:16;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1466:429:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1466:429:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1466:429:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1466:429:16;;;;;;;;;;;;;;;:::i;:::-;;1901:345;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1901:345:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1901:345:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6650:180;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6650:180:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2849:429;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2849:429:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5264:690;5407:15;5433:6;5425:25;;;5459:4;5425:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5425:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5425:40:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5425:40:16;;;;;;;;;;;;;;;;5407:58;;498:42;5639:23;;:6;:23;;;5635:110;;5678:56;5692:10;5712:4;5719:6;5727;5678:13;:56::i;:::-;5635:110;5754:22;5761:6;5769;5754;:22::i;:::-;5824:13;5848:6;5840:25;;;5874:4;5840:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5840:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5840:40:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5840:40:16;;;;;;;;;;;;;;;;5824:56;;5891;5901:6;5909:10;5921:25;5925:8;5935:10;5921:3;:25::i;:::-;5891:9;:56::i;:::-;5264:690;;;;:::o;4686:167::-;4810:1;4778:6;4770:22;;;4793:12;4770:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4770:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4770:36:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4770:36:16;;;;;;;;;;;;;;;;:41;4762:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4686:167;;:::o;2581:157::-;2677:21;2690:7;2677:12;:21::i;:::-;2708:23;2723:7;2708:14;:23::i;:::-;2581:157;:::o;2252:323::-;2362:6;2371:1;2362:10;;2357:212;2378:7;:14;2374:1;:18;2357:212;;;498:42;2462:27;;:7;2470:1;2462:10;;;;;;;;;;;;;;:27;;;2458:101;;2509:35;2523:7;2531:1;2523:10;;;;;;;;;;;;;;2540:2;2509:13;:35::i;:::-;2458:101;2394:3;;;;;;;2357:212;;;;2252:323;:::o;3710:227::-;3849:11;:9;:11::i;:::-;3902:28;3909:6;3917:12;3902:6;:28::i;:::-;3710:227;;:::o;2744:99::-;498:42;2790:27;;;2824:9;2790:46;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2790:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2790:46:16;;;;;2744:99::o;3284:159::-;3400:1;3368:6;3360:22;;;3383:12;3360:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3360:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3360:36:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3360:36:16;;;;;;;;;;;;;;;;:41;3352:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3284:159;;:::o;4283:397::-;498:42;4387:23;;:6;:23;;;4383:291;;;4434:6;4426:33;;;4466:6;4474:9;4426:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4426:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4426:58:16;;;;;4383:291;;;4515:29;4529:6;4537;4515:13;:29::i;:::-;4622:1;4574:6;4566:33;;;4600:9;4611:6;4566:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4566:52:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4566:52:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4566:52:16;;;;;;;;;;;;;;;;:57;4558:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4383:291;4283:397;;;:::o;6836:200::-;6950:32;6967:6;6975;6950:16;:32::i;:::-;6992:37;7002:6;7010:10;7022:6;6992:9;:37::i;:::-;6836:200;;:::o;3449:255::-;3619:34;3626:12;3640;3619:6;:34::i;:::-;3663;3670:12;3684;3663:6;:34::i;:::-;3449:255;;;;:::o;6206:282::-;498:42;6322:23;;:6;:23;;;6318:110;;6361:56;6375:10;6395:4;6402:6;6410;6361:13;:56::i;:::-;6318:110;6437:44;6455:9;6466:6;6474;6437:17;:44::i;:::-;6206:282;;;:::o;4859:198::-;5003:1;4961:6;4953:32;;;4986:12;4953:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4953:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4953:46:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4953:46:16;;;;;;;;;;;;;;;;:51;4945:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4859:198;;:::o;6494:150::-;6568:22;6575:6;6583;6568;:22::i;:::-;6600:37;6610:6;6618:10;6630:6;6600:9;:37::i;:::-;6494:150;;:::o;3943:334::-;498:42;4022:23;;:6;:23;;;4018:253;;;4069:6;4061:27;;;4095:6;4061:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4061:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4061:43:16;;;;;4018:253;;;4135:29;4149:6;4157;4135:13;:29::i;:::-;4225:1;4194:6;4186:27;;;4214:6;4186:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4186:35:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4186:35:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4186:35:16;;;;;;;;;;;;;;;;:40;4178:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:253;3943:334;;:::o;5960:240::-;498:42;6051:23;;:6;:23;;;6047:110;;6090:56;6104:10;6124:4;6131:6;6139;6090:13;:56::i;:::-;6047:110;6166:27;6178:6;6186;6166:11;:27::i;:::-;5960:240;;:::o;1466:429::-;1670:20;417:42;1693:53;;;1747:7;1693:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1693:62:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1693:62:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:62:16;;;;;;39:16:-1;36:1;17:17;2:54;1693:62:16;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1693:62:16;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;1693:62:16;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1693:62:16;;;;;;;;;;;1670:85;;1771:6;1780:1;1771:10;;1766:123;1787:6;:13;1783:1;:17;1766:123;;;1842:1;1829:6;1836:1;1829:9;;;;;;;;;;;;;;:14;1821:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:3;;;;;;;1766:123;;;;1466:429;;:::o;1901:345::-;2051:18;2080:6;2072:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2072:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2072:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2072:28:16;;;;;;;;;;;;;;;;2051:49;;2177:4;2131:50;;2138:10;2131:26;;;2158:6;2166;2131:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:42:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:42:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2131:42:16;;;;;;;;;;;;;;;;:50;;;2110:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1901:345;;;:::o;6650:180::-;6754:22;6761:6;6769;6754;:22::i;:::-;6786:37;6796:6;6804:10;6816:6;6786:9;:37::i;:::-;6650:180;;:::o;2849:429::-;498:42;2923:23;;:6;:23;;;2919:353;;;498:42;2962:27;;;2996:6;2962:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2962:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2962:43:16;;;;;2919:353;;;3099:29;3113:6;3121;3099:13;:29::i;:::-;3198:1;3174:6;3166:20;;;3187:6;3166:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3166:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3166:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3166:28:16;;;;;;;;;;;;;;;;:33;3143:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2919:353;2849:429;;:::o;722:345::-;866:18;895:6;887:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;887:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;887:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;887:28:16;;;;;;;;;;;;;;;;866:49;;953:10;946:31;;;978:6;986:9;997:6;946:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;946:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;946:58:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;946:58:16;;;;;;;;;;;;;;;;925:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;722:345;;;;;:::o;547:169::-;605:7;637:1;632;:6;;624:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;673:9;689:1;685;:5;673:17;;708:1;701:8;;;547:169;;;;:::o;1073:387::-;498:42;1193:23;;:6;:23;;;1189:265;;;1232:9;:14;;1253:6;1232:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1232:32:16;;1189:265;;;1335:6;1327:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1327:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1327:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1327:28:16;;;;;;;;;;;;;;;;1320:45;;;1366:9;1377:6;1320:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1320:64:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1320:64:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1320:64:16;;;;;;;;;;;;;;;;1295:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1189:265;1073:387;;;:::o", "source": "/* Mostly functions from https://compound.finance/developers/ctokens\n and https://compound.finance/developers/comptroller\n*/\npragma solidity 0.5.16;\n\nimport \"../../interfaces/compound/IComptroller.sol\";\nimport \"../../interfaces/compound/ICEther.sol\";\nimport \"../../interfaces/compound/ICToken.sol\";\n\nimport \"../../interfaces/IERC20.sol\";\n\ncontract CompoundBase {\n address constant CompoundComptrollerAddress = 0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B;\n address constant CEtherAddress = 0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5;\n\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a, \"safe-math-sub-failed\");\n uint256 c = a - b;\n\n return c;\n }\n\n function _transferFrom(\n address sender,\n address recipient,\n address cToken,\n uint amount\n ) internal {\n address underlying = ICToken(cToken).underlying();\n require(\n IERC20(underlying).transferFrom(sender, recipient, amount),\n \"cmpnd-mgr-transfer-from-failed\"\n );\n }\n\n function _transfer(\n address cToken,\n address recipient,\n uint amount\n ) internal {\n if (cToken == CEtherAddress) {\n recipient.call.value(amount)(\"\");\n } else {\n require(\n IERC20(ICToken(cToken).underlying()).transfer(recipient, amount),\n \"cmpnd-mgr-transfer-failed\"\n );\n }\n }\n\n function enterMarkets(\n address[] memory cTokens // Address of the Compound derivation token (e.g. cDAI)\n ) public {\n // Enter the compound markets for all the specified tokens\n uint[] memory errors = IComptroller(CompoundComptrollerAddress).enterMarkets(cTokens);\n\n for (uint i = 0; i < errors.length; i++) {\n require(errors[i] == 0, \"cmpnd-mgr-enter-markets-failed\");\n }\n }\n\n function approveCToken(\n address cToken,\n uint amount\n ) public {\n // Approves CToken contract to call `transferFrom`\n address underlying = ICToken(cToken).underlying();\n require(\n IERC20(underlying).approve(cToken, amount) == true,\n \"cmpnd-mgr-ctoken-approved-failed\"\n );\n }\n\n function approveCTokens(\n address[] memory cTokens // Tokens to approve\n ) public {\n for (uint i = 0; i < cTokens.length; i++) {\n // Don't need to approve ICEther\n if (cTokens[i] != CEtherAddress) {\n approveCToken(cTokens[i], uint(-1));\n }\n }\n }\n\n function enterMarketsAndApproveCTokens(\n address[] memory cTokens\n ) public {\n enterMarkets(cTokens);\n approveCTokens(cTokens);\n }\n\n function supplyETH() public payable {\n ICEther(CEtherAddress).mint.value(msg.value)();\n }\n\n function supply(address cToken, uint amount) public payable {\n if (cToken == CEtherAddress) {\n ICEther(CEtherAddress).mint.value(amount)();\n } else {\n // Approves CToken contract to call `transferFrom`\n approveCToken(cToken, amount);\n\n require(\n ICToken(cToken).mint(amount) == 0,\n \"cmpnd-mgr-ctoken-supply-failed\"\n );\n }\n }\n\n function borrow(address cToken, uint borrowAmount) public {\n require(ICToken(cToken).borrow(borrowAmount) == 0, \"cmpnd-mgr-ctoken-borrow-failed\");\n }\n\n function supplyAndBorrow(\n address supplyCToken,\n uint supplyAmount,\n address borrowCToken,\n uint borrowAmount\n ) public payable {\n supply(supplyCToken, supplyAmount);\n borrow(borrowCToken, borrowAmount);\n }\n\n function supplyETHAndBorrow(\n address cToken,\n uint borrowAmount\n ) public payable {\n // Supply some Ether\n supplyETH();\n\n // Borrow some CTokens\n borrow(cToken, borrowAmount);\n }\n\n function repayBorrow(address cToken, uint amount) public payable {\n if (cToken == CEtherAddress) {\n ICEther(cToken).repayBorrow.value(amount)();\n } else {\n approveCToken(cToken, amount);\n require(ICToken(cToken).repayBorrow(amount) == 0, \"cmpnd-mgr-ctoken-repay-failed\");\n }\n }\n\n function repayBorrowBehalf(address recipient, address cToken, uint amount) public payable {\n if (cToken == CEtherAddress) {\n ICEther(cToken).repayBorrowBehalf.value(amount)(recipient);\n } else {\n approveCToken(cToken, amount);\n require(ICToken(cToken).repayBorrowBehalf(recipient, amount) == 0, \"cmpnd-mgr-ctoken-repaybehalf-failed\");\n }\n }\n\n function redeem(address cToken, uint redeemTokens) public payable {\n require(ICToken(cToken).redeem(redeemTokens) == 0, \"cmpnd-mgr-ctoken-redeem-failed\");\n }\n\n function redeemUnderlying(address cToken, uint redeemTokens) public payable {\n require(ICToken(cToken).redeemUnderlying(redeemTokens) == 0, \"cmpnd-mgr-ctoken-redeem-underlying-failed\");\n }\n\n // -- Helper functions so proxy doesn't hold any funds, all funds borrowed\n // or redeemed gets sent to user\n // User needs to `approve(spender, amount)` before through proxy functions work\n\n function supplyThroughProxy(\n address cToken,\n uint amount\n ) public payable {\n // Gets initial CToken balance\n uint initialBal = ICToken(cToken).balanceOf(address(this));\n\n // If cToken isn't an ether address, we need to transferFrom\n // If this fails, users needs to execute `approve(spender, amount)` to this proxy\n if (cToken != CEtherAddress) {\n _transferFrom(msg.sender, address(this), cToken, amount);\n }\n supply(cToken, amount);\n\n // Sends CToken back to user\n uint finalBal = ICToken(cToken).balanceOf(address(this));\n\n _transfer(cToken, msg.sender, sub(finalBal, initialBal));\n }\n\n function repayBorrowThroughProxy(address cToken, uint amount) public payable {\n if (cToken != CEtherAddress) {\n _transferFrom(msg.sender, address(this), cToken, amount);\n }\n repayBorrow(cToken, amount);\n }\n\n function repayBorrowBehalfThroughProxy(address recipient, address cToken, uint amount) public payable {\n if (cToken != CEtherAddress) {\n _transferFrom(msg.sender, address(this), cToken, amount);\n }\n repayBorrowBehalf(recipient, cToken, amount);\n }\n\n function borrowThroughProxy(address cToken, uint amount) public {\n borrow(cToken, amount);\n _transfer(cToken, msg.sender, amount);\n }\n\n function redeemThroughProxy(\n address cToken,\n uint amount\n ) public payable {\n redeem(cToken, amount);\n _transfer(cToken, msg.sender, amount);\n }\n\n function redeemUnderlyingThroughProxy(\n address cToken,\n uint amount\n ) public payable {\n redeemUnderlying(cToken, amount);\n _transfer(cToken, msg.sender, amount);\n }\n}\n", @@ -637,10 +637,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "624:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1170,10 +1170,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "925:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1615,10 +1615,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "1295:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2165,10 +2165,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "1821:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2731,10 +2731,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "2110:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -3514,7 +3514,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "2824:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3985,10 +3985,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "3143:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4428,10 +4428,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "3352:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5316,10 +5316,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "4178:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5898,10 +5898,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "4558:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6387,10 +6387,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "4762:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6678,10 +6678,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "4945:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6838,7 +6838,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "5459:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -7035,7 +7035,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "5692:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7065,7 +7065,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "5712:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -7301,7 +7301,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "5874:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -7456,7 +7456,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "5909:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7742,7 +7742,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "6104:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7772,7 +7772,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "6124:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -8117,7 +8117,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "6375:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8147,7 +8147,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "6395:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -8565,7 +8565,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "6618:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8827,7 +8827,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "6804:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9089,7 +9089,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "7010:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9510,10 +9510,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "624:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10043,10 +10043,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "925:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10488,10 +10488,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "1295:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -11038,10 +11038,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "1821:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -11604,10 +11604,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "2110:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -12387,7 +12387,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "2824:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -12858,10 +12858,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "3143:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -13301,10 +13301,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "3352:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -14189,10 +14189,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "4178:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -14771,10 +14771,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "4558:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -15260,10 +15260,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "4762:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -15551,10 +15551,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "4945:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -15711,7 +15711,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "5459:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -15908,7 +15908,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "5692:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -15938,7 +15938,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "5712:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -16174,7 +16174,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "5874:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -16329,7 +16329,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "5909:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -16615,7 +16615,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "6104:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -16645,7 +16645,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "6124:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -16990,7 +16990,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "6375:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -17020,7 +17020,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7955, + "referencedDeclaration": 7816, "src": "6395:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -17438,7 +17438,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "6618:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -17700,7 +17700,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "6804:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -17962,7 +17962,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7794, "src": "7010:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18135,7 +18135,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.799Z", + "updatedAt": "2020-04-03T03:20:43.702Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DACProxy.json b/packages/smart-contracts/artifacts/DACProxy.json index d4167fb..36f39b4 100644 --- a/packages/smart-contracts/artifacts/DACProxy.json +++ b/packages/smart-contracts/artifacts/DACProxy.json @@ -286,25 +286,25 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"foo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"bar\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"fax\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"addressesProvider\",\"outputs\":[{\"internalType\":\"contract ILendingPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"name\":\"setCache\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":\"DACProxy\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xa93ae0a65d7000bbef6d0a31cd3c2d6f79e37e13db19f127b53e6e707f0507b4\",\"urls\":[\"bzz-raw://931af9f9ea15aade3685b204a6637b1902296f06b4128eb57a066e7ab8929026\",\"dweb:/ipfs/QmSauiKUjz6sXdcWSwvjzwNsr8Gvbj38mh97ikks4dwfbR\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x60806040527324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b50604051620027b2380380620027b283398181016040526200008c9190810190620004f2565b600133600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a262000123816200013e60201b60201c565b505062000136816200013e60201b60201c565b5050620007d7565b600062000176336000357fffffffff00000000000000000000000000000000000000000000000000000000166200030460201b60201c565b620001b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001af9062000671565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916846000366040516200023c93929190620006b5565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ae9062000693565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003455760019050620004be565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003a65760019050620004be565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620004075760009050620004be565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401620004679392919062000634565b60206040518083038186803b1580156200048057600080fd5b505afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004bb91908101906200051e565b90505b92915050565b600081519050620004d581620007a3565b92915050565b600081519050620004ec81620007bd565b92915050565b6000602082840312156200050557600080fd5b60006200051584828501620004c4565b91505092915050565b6000602082840312156200053157600080fd5b60006200054184828501620004db565b91505092915050565b62000555816200070d565b82525050565b62000566816200072d565b82525050565b60006200057a8385620006eb565b93506200058983858462000783565b620005948362000792565b840190509392505050565b6000620005ae601483620006fc565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000620005f0601f83620006fc565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b6200062e8162000779565b82525050565b60006060820190506200064b60008301866200054a565b6200065a60208301856200054a565b6200066960408301846200055b565b949350505050565b600060208201905081810360008301526200068c816200059f565b9050919050565b60006020820190508181036000830152620006ae81620005e1565b9050919050565b6000604082019050620006cc600083018662000623565b8181036020830152620006e18184866200056c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200071a8262000759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b620007ae816200070d565b8114620007ba57600080fd5b50565b620007c88162000721565b8114620007d457600080fd5b50565b611fcb80620007e76000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b59190810190611535565b610258565b005b6100d660048036036100d191908101906115b0565b61036e565b6040516100e39190611b4a565b60405180910390f35b610106600480360361010191908101906116ad565b61052a565b604051610114929190611aff565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611b87565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611719565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611a84565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be9190810190611535565b610833565b6040516101d09190611b2f565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611b6c565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611ba2565b60405180910390f35b34801561023b57600080fd5b5061025660048036036102519190810190611604565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611bdf565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611bdf565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611cba565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611c3f565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611b4a565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d9919081019061155e565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611b4a565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd919081019061155e565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611bdf565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611bdf565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611cba565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611c7f565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611bdf565b60405180910390fd5b6000610ab7600285610f9190919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c610fdb565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060206004611048565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050608461110a565b905060608289604051602001610bc89190611c9f565b60405160208183030381529060405289604051602001610be89190611c9f565b60405160208183030381529060405287604051602001610c089190611c9f565b60405160208183030381529060405285604051602001610c2c959493929190611a24565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610d12577356d5e01d5d2f853aa8f4ac5d2ffb4cbbca9e2b0f73ffffffffffffffffffffffffffffffffffffffff1685604051610cc890611a6f565b60006040518083038185875af1925050503d8060008114610d05576040519150601f19603f3d011682016040523d82523d6000602084013e610d0a565b606091505b505050610db5565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7356d5e01d5d2f853aa8f4ac5d2ffb4cbbca9e2b0f876040518363ffffffff1660e01b8152600401610d61929190611a9f565b602060405180830381600087803b158015610d7b57600080fd5b505af1158015610d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610db39190810190611684565b505b610dd18a610dcc8a8c61116590919063ffffffff16565b6111ba565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e1c5760019050610f8b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7b5760019050610f8b565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eda5760009050610f8b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401610f3893929190611ac8565b60206040518083038186803b158015610f5057600080fd5b505afa158015610f64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f889190810190611684565b90505b92915050565b6000610fd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061126e565b905092915050565b60006014820183511015611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90611c1f565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b606081830184511015611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790611c5f565b60405180910390fd5b60608215600081146110ad576040519150602082016040526110fe565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156110eb57805183526020830192506020810190506110ce565b50868552601f19601f8301166040525050505b50809150509392505050565b60608251821061114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690611c5f565b60405180910390fd5b61115d838384865103611048565b905092915050565b6000808284019050838110156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a790611bff565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561122457600080fd5b505afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061125c9190810190611587565b90506112698184846112cf565b505050565b600080831182906112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9190611bbd565b60405180910390fd5b5060008385816112c157fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611385578273ffffffffffffffffffffffffffffffffffffffff168160405161133b90611a6f565b60006040518083038185875af1925050503d8060008114611378576040519150601f19603f3d011682016040523d82523d6000602084013e61137d565b606091505b505050611414565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016113c0929190611a9f565b602060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114129190810190611684565b505b505050565b60008135905061142881611f15565b92915050565b60008151905061143d81611f15565b92915050565b60008151905061145281611f2c565b92915050565b60008151905061146781611f43565b92915050565b60008083601f84011261147f57600080fd5b8235905067ffffffffffffffff81111561149857600080fd5b6020830191508360018202830111156114b057600080fd5b9250929050565b600082601f8301126114c857600080fd5b81356114db6114d682611d19565b611cec565b915080825260208301602083018583830111156114f757600080fd5b611502838284611ec2565b50505092915050565b60008135905061151a81611f5a565b92915050565b60008135905061152f81611f71565b92915050565b60006020828403121561154757600080fd5b600061155584828501611419565b91505092915050565b60006020828403121561157057600080fd5b600061157e8482850161142e565b91505092915050565b60006020828403121561159957600080fd5b60006115a784828501611443565b91505092915050565b600080604083850312156115c357600080fd5b60006115d185828601611419565b925050602083013567ffffffffffffffff8111156115ee57600080fd5b6115fa858286016114b7565b9150509250929050565b60008060008060006080868803121561161c57600080fd5b600061162a88828901611419565b955050602061163b88828901611520565b945050604061164c88828901611520565b935050606086013567ffffffffffffffff81111561166957600080fd5b6116758882890161146d565b92509250509295509295909350565b60006020828403121561169657600080fd5b60006116a484828501611458565b91505092915050565b600080604083850312156116c057600080fd5b600083013567ffffffffffffffff8111156116da57600080fd5b6116e6858286016114b7565b925050602083013567ffffffffffffffff81111561170357600080fd5b61170f858286016114b7565b9150509250929050565b60006020828403121561172b57600080fd5b60006117398482850161150b565b91505092915050565b61174b81611e20565b82525050565b61175a81611d88565b82525050565b61176981611dac565b82525050565b61177881611db8565b82525050565b600061178a8385611d5b565b9350611797838584611ec2565b6117a083611f04565b840190509392505050565b60006117b682611d45565b6117c08185611d5b565b93506117d0818560208601611ed1565b6117d981611f04565b840191505092915050565b60006117ef82611d45565b6117f98185611d6c565b9350611809818560208601611ed1565b80840191505092915050565b61181e81611e32565b82525050565b61182d81611e56565b82525050565b61183c81611e7a565b82525050565b600061184d82611d50565b6118578185611d77565b9350611867818560208601611ed1565b61187081611f04565b840191505092915050565b6000611888601483611d77565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b60006118c8601b83611d77565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611908601283611d77565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611948602083611d77565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611988600083611d6c565b9150600082019050919050565b60006119a2601883611d77565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b60006119e2601f83611d77565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611a1e81611e16565b82525050565b6000611a3082886117e4565b9150611a3c82876117e4565b9150611a4882866117e4565b9150611a5482856117e4565b9150611a6082846117e4565b91508190509695505050505050565b6000611a7a8261197b565b9150819050919050565b6000602082019050611a996000830184611751565b92915050565b6000604082019050611ab46000830185611742565b611ac16020830184611a15565b9392505050565b6000606082019050611add6000830186611751565b611aea6020830185611751565b611af7604083018461176f565b949350505050565b6000604082019050611b146000830185611751565b8181036020830152611b2681846117ab565b90509392505050565b6000602082019050611b446000830184611760565b92915050565b60006020820190508181036000830152611b6481846117ab565b905092915050565b6000602082019050611b816000830184611815565b92915050565b6000602082019050611b9c6000830184611824565b92915050565b6000602082019050611bb76000830184611833565b92915050565b60006020820190508181036000830152611bd78184611842565b905092915050565b60006020820190508181036000830152611bf88161187b565b9050919050565b60006020820190508181036000830152611c18816118bb565b9050919050565b60006020820190508181036000830152611c38816118fb565b9050919050565b60006020820190508181036000830152611c588161193b565b9050919050565b60006020820190508181036000830152611c7881611995565b9050919050565b60006020820190508181036000830152611c98816119d5565b9050919050565b6000602082019050611cb46000830184611a15565b92915050565b6000604082019050611ccf6000830186611a15565b8181036020830152611ce281848661177e565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611d0f57600080fd5b8060405250919050565b600067ffffffffffffffff821115611d3057600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611d9382611df6565b9050919050565b6000611da582611df6565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611def82611d88565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611e2b82611e9e565b9050919050565b6000611e3d82611e44565b9050919050565b6000611e4f82611df6565b9050919050565b6000611e6182611e68565b9050919050565b6000611e7382611df6565b9050919050565b6000611e8582611e8c565b9050919050565b6000611e9782611df6565b9050919050565b6000611ea982611eb0565b9050919050565b6000611ebb82611df6565b9050919050565b82818337600083830152505050565b60005b83811015611eef578082015181840152602081019050611ed4565b83811115611efe576000848401525b50505050565b6000601f19601f8301169050919050565b611f1e81611d88565b8114611f2957600080fd5b50565b611f3581611d9a565b8114611f4057600080fd5b50565b611f4c81611dac565b8114611f5757600080fd5b50565b611f6381611de4565b8114611f6e57600080fd5b50565b611f7a81611e16565b8114611f8557600080fd5b5056fea365627a7a72315820eb72892c84a1dab4e2065281a1aeae5cf9604d918ebcc2bff51238670fae00a56c6578706572696d656e74616cf564736f6c63430005100040", - "deployedBytecode": "0x6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b59190810190611535565b610258565b005b6100d660048036036100d191908101906115b0565b61036e565b6040516100e39190611b4a565b60405180910390f35b610106600480360361010191908101906116ad565b61052a565b604051610114929190611aff565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611b87565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611719565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611a84565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be9190810190611535565b610833565b6040516101d09190611b2f565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611b6c565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611ba2565b60405180910390f35b34801561023b57600080fd5b5061025660048036036102519190810190611604565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611bdf565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611bdf565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611cba565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611c3f565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611b4a565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d9919081019061155e565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611b4a565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd919081019061155e565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611bdf565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611bdf565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611cba565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611c7f565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611bdf565b60405180910390fd5b6000610ab7600285610f9190919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c610fdb565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060206004611048565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050608461110a565b905060608289604051602001610bc89190611c9f565b60405160208183030381529060405289604051602001610be89190611c9f565b60405160208183030381529060405287604051602001610c089190611c9f565b60405160208183030381529060405285604051602001610c2c959493929190611a24565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610d12577356d5e01d5d2f853aa8f4ac5d2ffb4cbbca9e2b0f73ffffffffffffffffffffffffffffffffffffffff1685604051610cc890611a6f565b60006040518083038185875af1925050503d8060008114610d05576040519150601f19603f3d011682016040523d82523d6000602084013e610d0a565b606091505b505050610db5565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7356d5e01d5d2f853aa8f4ac5d2ffb4cbbca9e2b0f876040518363ffffffff1660e01b8152600401610d61929190611a9f565b602060405180830381600087803b158015610d7b57600080fd5b505af1158015610d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610db39190810190611684565b505b610dd18a610dcc8a8c61116590919063ffffffff16565b6111ba565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e1c5760019050610f8b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7b5760019050610f8b565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eda5760009050610f8b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401610f3893929190611ac8565b60206040518083038186803b158015610f5057600080fd5b505afa158015610f64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f889190810190611684565b90505b92915050565b6000610fd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061126e565b905092915050565b60006014820183511015611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90611c1f565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b606081830184511015611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790611c5f565b60405180910390fd5b60608215600081146110ad576040519150602082016040526110fe565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156110eb57805183526020830192506020810190506110ce565b50868552601f19601f8301166040525050505b50809150509392505050565b60608251821061114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690611c5f565b60405180910390fd5b61115d838384865103611048565b905092915050565b6000808284019050838110156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a790611bff565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561122457600080fd5b505afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061125c9190810190611587565b90506112698184846112cf565b505050565b600080831182906112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9190611bbd565b60405180910390fd5b5060008385816112c157fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611385578273ffffffffffffffffffffffffffffffffffffffff168160405161133b90611a6f565b60006040518083038185875af1925050503d8060008114611378576040519150601f19603f3d011682016040523d82523d6000602084013e61137d565b606091505b505050611414565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016113c0929190611a9f565b602060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114129190810190611684565b505b505050565b60008135905061142881611f15565b92915050565b60008151905061143d81611f15565b92915050565b60008151905061145281611f2c565b92915050565b60008151905061146781611f43565b92915050565b60008083601f84011261147f57600080fd5b8235905067ffffffffffffffff81111561149857600080fd5b6020830191508360018202830111156114b057600080fd5b9250929050565b600082601f8301126114c857600080fd5b81356114db6114d682611d19565b611cec565b915080825260208301602083018583830111156114f757600080fd5b611502838284611ec2565b50505092915050565b60008135905061151a81611f5a565b92915050565b60008135905061152f81611f71565b92915050565b60006020828403121561154757600080fd5b600061155584828501611419565b91505092915050565b60006020828403121561157057600080fd5b600061157e8482850161142e565b91505092915050565b60006020828403121561159957600080fd5b60006115a784828501611443565b91505092915050565b600080604083850312156115c357600080fd5b60006115d185828601611419565b925050602083013567ffffffffffffffff8111156115ee57600080fd5b6115fa858286016114b7565b9150509250929050565b60008060008060006080868803121561161c57600080fd5b600061162a88828901611419565b955050602061163b88828901611520565b945050604061164c88828901611520565b935050606086013567ffffffffffffffff81111561166957600080fd5b6116758882890161146d565b92509250509295509295909350565b60006020828403121561169657600080fd5b60006116a484828501611458565b91505092915050565b600080604083850312156116c057600080fd5b600083013567ffffffffffffffff8111156116da57600080fd5b6116e6858286016114b7565b925050602083013567ffffffffffffffff81111561170357600080fd5b61170f858286016114b7565b9150509250929050565b60006020828403121561172b57600080fd5b60006117398482850161150b565b91505092915050565b61174b81611e20565b82525050565b61175a81611d88565b82525050565b61176981611dac565b82525050565b61177881611db8565b82525050565b600061178a8385611d5b565b9350611797838584611ec2565b6117a083611f04565b840190509392505050565b60006117b682611d45565b6117c08185611d5b565b93506117d0818560208601611ed1565b6117d981611f04565b840191505092915050565b60006117ef82611d45565b6117f98185611d6c565b9350611809818560208601611ed1565b80840191505092915050565b61181e81611e32565b82525050565b61182d81611e56565b82525050565b61183c81611e7a565b82525050565b600061184d82611d50565b6118578185611d77565b9350611867818560208601611ed1565b61187081611f04565b840191505092915050565b6000611888601483611d77565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b60006118c8601b83611d77565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611908601283611d77565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611948602083611d77565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611988600083611d6c565b9150600082019050919050565b60006119a2601883611d77565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b60006119e2601f83611d77565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611a1e81611e16565b82525050565b6000611a3082886117e4565b9150611a3c82876117e4565b9150611a4882866117e4565b9150611a5482856117e4565b9150611a6082846117e4565b91508190509695505050505050565b6000611a7a8261197b565b9150819050919050565b6000602082019050611a996000830184611751565b92915050565b6000604082019050611ab46000830185611742565b611ac16020830184611a15565b9392505050565b6000606082019050611add6000830186611751565b611aea6020830185611751565b611af7604083018461176f565b949350505050565b6000604082019050611b146000830185611751565b8181036020830152611b2681846117ab565b90509392505050565b6000602082019050611b446000830184611760565b92915050565b60006020820190508181036000830152611b6481846117ab565b905092915050565b6000602082019050611b816000830184611815565b92915050565b6000602082019050611b9c6000830184611824565b92915050565b6000602082019050611bb76000830184611833565b92915050565b60006020820190508181036000830152611bd78184611842565b905092915050565b60006020820190508181036000830152611bf88161187b565b9050919050565b60006020820190508181036000830152611c18816118bb565b9050919050565b60006020820190508181036000830152611c38816118fb565b9050919050565b60006020820190508181036000830152611c588161193b565b9050919050565b60006020820190508181036000830152611c7881611995565b9050919050565b60006020820190508181036000830152611c98816119d5565b9050919050565b6000602082019050611cb46000830184611a15565b92915050565b6000604082019050611ccf6000830186611a15565b8181036020830152611ce281848661177e565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611d0f57600080fd5b8060405250919050565b600067ffffffffffffffff821115611d3057600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611d9382611df6565b9050919050565b6000611da582611df6565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611def82611d88565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611e2b82611e9e565b9050919050565b6000611e3d82611e44565b9050919050565b6000611e4f82611df6565b9050919050565b6000611e6182611e68565b9050919050565b6000611e7382611df6565b9050919050565b6000611e8582611e8c565b9050919050565b6000611e9782611df6565b9050919050565b6000611ea982611eb0565b9050919050565b6000611ebb82611df6565b9050919050565b82818337600083830152505050565b60005b83811015611eef578082015181840152602081019050611ed4565b83811115611efe576000848401525b50505050565b6000601f19601f8301169050919050565b611f1e81611d88565b8114611f2957600080fd5b50565b611f3581611d9a565b8114611f4057600080fd5b50565b611f4c81611dac565b8114611f5757600080fd5b50565b611f6381611de4565b8114611f6e57600080fd5b50565b611f7a81611e16565b8114611f8557600080fd5b5056fea365627a7a72315820eb72892c84a1dab4e2065281a1aeae5cf9604d918ebcc2bff51238670fae00a56c6578706572696d656e74616cf564736f6c63430005100040", - "sourceMap": "318:2622:29:-;;;485:42:15;398:130;;;;;;;;;;;;;;;;;;;;546:76:29;8:9:-1;5:2;;;30:1;27;20:12;5:2;546:76:29;;;;;;;;;;;;;;;;;;;;;;;;359:1;1074:10:17;1066:5;;:18;;;;;;;;;;;;;;;;;;1111:10;1099:23;;;;;;;;;;;;1221:20:21;1230:10;1221:8;;;:20;;:::i;:::-;;1172:76;595:20:29;604:10;595:8;;;:20;;:::i;:::-;;546:76;318:2622;;2614:274:21;2710:4;1476:33:17;1489:10;1501:7;;;;1476:12;;;:33;;:::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;2760:1:21;2738:24;;:10;:24;;;;2730:68;;;;;;;;;;;;;;;;;;;;;;2829:10;2808:5;;:32;;;;;;;;;;;;;;;;;;2877:4;2870:11;;1544:1:17;;;2614:274:21;;;:::o;1558:375:17:-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1874:42:17;;;;;;;;;1867:49;;1558:375;;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;;;68:71;;;;;146:128;;227:6;221:13;212:22;;239:30;263:5;239:30;;;206:68;;;;;281:263;;396:2;384:9;375:7;371:23;367:32;364:2;;;412:1;409;402:12;364:2;447:1;464:64;520:7;511:6;500:9;496:22;464:64;;;454:74;;426:108;358:186;;;;;551:257;;663:2;651:9;642:7;638:23;634:32;631:2;;;679:1;676;669:12;631:2;714:1;731:61;784:7;775:6;764:9;760:22;731:61;;;721:71;;693:105;625:183;;;;;815:113;898:24;916:5;898:24;;;893:3;886:37;880:48;;;935:110;1016:23;1033:5;1016:23;;;1011:3;1004:36;998:47;;;1075:297;;1189:70;1252:6;1247:3;1189:70;;;1182:77;;1271:43;1307:6;1302:3;1295:5;1271:43;;;1336:29;1358:6;1336:29;;;1331:3;1327:39;1320:46;;1175:197;;;;;;1381:320;;1541:67;1605:2;1600:3;1541:67;;;1534:74;;1641:22;1637:1;1632:3;1628:11;1621:43;1692:2;1687:3;1683:12;1676:19;;1527:174;;;;1710:331;;1870:67;1934:2;1929:3;1870:67;;;1863:74;;1970:33;1966:1;1961:3;1957:11;1950:54;2032:2;2027:3;2023:12;2016:19;;1856:185;;;;2049:113;2132:24;2150:5;2132:24;;;2127:3;2120:37;2114:48;;;2169:431;;2341:2;2330:9;2326:18;2318:26;;2355:71;2423:1;2412:9;2408:17;2399:6;2355:71;;;2437:72;2505:2;2494:9;2490:18;2481:6;2437:72;;;2520:70;2586:2;2575:9;2571:18;2562:6;2520:70;;;2312:288;;;;;;;2607:407;;2798:2;2787:9;2783:18;2775:26;;2848:9;2842:4;2838:20;2834:1;2823:9;2819:17;2812:47;2873:131;2999:4;2873:131;;;2865:139;;2769:245;;;;3021:407;;3212:2;3201:9;3197:18;3189:26;;3262:9;3256:4;3252:20;3248:1;3237:9;3233:17;3226:47;3287:131;3413:4;3287:131;;;3279:139;;3183:245;;;;3435:428;;3609:2;3598:9;3594:18;3586:26;;3623:71;3691:1;3680:9;3676:17;3667:6;3623:71;;;3742:9;3736:4;3732:20;3727:2;3716:9;3712:18;3705:48;3767:86;3848:4;3839:6;3831;3767:86;;;3759:94;;3580:283;;;;;;;3871:162;;3985:6;3980:3;3973:19;4022:4;4017:3;4013:14;3998:29;;3966:67;;;;;4042:163;;4157:6;4152:3;4145:19;4194:4;4189:3;4185:14;4170:29;;4138:67;;;;;4213:91;;4275:24;4293:5;4275:24;;;4264:35;;4258:46;;;;4311:85;;4384:5;4377:13;4370:21;4359:32;;4353:43;;;;4403:144;;4475:66;4468:5;4464:78;4453:89;;4447:100;;;;4554:121;;4627:42;4620:5;4616:54;4605:65;;4599:76;;;;4682:72;;4744:5;4733:16;;4727:27;;;;4762:145;4843:6;4838:3;4833;4820:30;4899:1;4890:6;4885:3;4881:16;4874:27;4813:94;;;;4915:97;;5003:2;4999:7;4994:2;4987:5;4983:14;4979:28;4969:38;;4963:49;;;;5020:117;5089:24;5107:5;5089:24;;;5082:5;5079:35;5069:2;;5128:1;5125;5118:12;5069:2;5063:74;;5144:111;5210:21;5225:5;5210:21;;;5203:5;5200:32;5190:2;;5246:1;5243;5236:12;5190:2;5184:71;;318:2622:29;;;;;;;", - "deployedSourceMap": "318:2622:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1135:130:17;;;;;;;;;;;;;;;;:::i;:::-;;1748:840:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1360:382;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1109:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1109:25:21;;;:::i;:::-;;;;;;;;;;;;;;;;1271:167:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1271:167:17;;;;;;;;;;;;;;;;:::i;:::-;;1002:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1002:26:17;;;:::i;:::-;;;;;;;;;;;;;;;;2614:274:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2614:274:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;966:30:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:30:17;;;:::i;:::-;;;;;;;;;;;;;;;;398:130:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:130:15;;;:::i;:::-;;;;;;;;;;;;;;;;699:2239:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;699:2239:29;;;;;;;;;;;;;;;;:::i;:::-;;1135:130:17;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1219:6;1211:5;;:14;;;;;;;;;;;;;;;;;;1252:5;;;;;;;;;;;1240:18;;;;;;;;;;;;1135:130;:::o;1748:840:21:-;1876:21;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;1940:1:21;1921:21;;:7;:21;;;;1913:66;;;;;;;;;;;;;;;;;;;;;;2147:1;2144;2136:5;2130:12;2123:4;2116:5;2112:16;2103:7;2096:4;2091:3;2087:14;2074:75;2174:14;2220:4;2214:11;2202:23;;2301:4;2297:9;2290:4;2283;2277;2273:15;2269:26;2265:42;2255:8;2251:57;2245:4;2238:71;2339:4;2329:8;2322:22;2396:4;2393:1;2386:4;2376:8;2372:19;2357:44;2429:9;2422:17;2457:1;2452:120;;;;2415:157;;2452:120;2553:4;2546;2536:8;2532:19;2525:33;2415:157;;2043:539;;1544:1:17;;;1748:840:21;;;;:::o;1360:382::-;1465:14;1481:21;1527:5;;;;;;;;;;;:10;;;1538:5;1527:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:17:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1527:17:21;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1527:17:21;;;;;;;;;1518:26;;1576:1;1558:20;;:6;:20;;;1554:138;;;1663:5;;;;;;;;;;;:11;;;1675:5;1663:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1663:18:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1663:18:21;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1663:18:21;;;;;;;;;1654:27;;1554:138;1713:22;1721:6;1729:5;1713:7;:22::i;:::-;1702:33;;1360:382;;;;;:::o;1109:25::-;;;;;;;;;;;;;:::o;1271:167:17:-;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1371:10;1359:9;;:22;;;;;;;;;;;;;;;;;;1420:9;;;;;;;;;;;1396:35;;;;;;;;;;;;1271:167;:::o;1002:26::-;;;;;;;;;;;;;:::o;2614:274:21:-;2710:4;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;2760:1:21;2738:24;;:10;:24;;;;2730:68;;;;;;;;;;;;;;;;;;;;;;2829:10;2808:5;;:32;;;;;;;;;;;;;;;;;;2877:4;2870:11;;1544:1:17;;;2614:274:21;;;:::o;966:30:17:-;;;;;;;;;;;;;:::o;398:130:15:-;;;;;;;;;;;;;:::o;699:2239:29:-;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1023:16:29;1042:11;1051:1;1042:4;:8;;:11;;;;:::i;:::-;1023:30;;2020:21;2044:27;2059:7;;2044:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2044:27:29;;;;;;2068:2;2044:14;:27::i;:::-;2020:51;;2081:17;2105:21;2111:7;;2105:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2105:21:29;;;;;;2120:2;2124:1;2105:5;:21::i;:::-;2081:45;;2136:17;2160:24;2171:7;;2160:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2160:24:29;;;;;;2180:3;2160:10;:24::i;:::-;2136:48;;2306:20;2359:4;2388:7;2377:19;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2377:19:29;;;2421:4;2410:16;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2410:16:29;;;2451:11;2440:23;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2440:23:29;;;2477:4;2329:162;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2329:162:29;;;2306:185;;2533:31;2541:13;2556:7;2533;:31::i;:::-;;2622:42;2610:54;;:8;:54;;;2606:232;;;497:42;2680:29;;2716:11;2680:52;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2680:52:29;;2606:232;;;2770:8;2763:25;;;497:42;2815:11;2763:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2763:64:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2763:64:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2763:64:29;;;;;;;;;;2606:232;2871:60;2903:8;2913:17;2925:4;2913:7;:11;;:17;;;;:::i;:::-;2871:31;:60::i;:::-;1544:1:17;;;;;699:2239:29;;;;;:::o;1558:375:17:-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1874:42:17;;;;;;;;;1867:49;;1558:375;;;;;:::o;3073:130:32:-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3150:46;;3073:130;;;;:::o;3143:358:14:-;3227:7;3281:2;3272:6;:11;3254:6;:13;:30;;3246:61;;;;;;;;;;;;;;;;;;;;;;3317:19;3428:27;3418:6;3411:4;3403:6;3399:17;3395:30;3389:37;3385:71;3370:86;;3483:11;3476:18;;;3143:358;;;;:::o;567:2570::-;713:12;776:7;767:6;:16;749:6;:13;:35;;741:72;;;;;;;;;;;;;;;;;;;;;;824:22;894:7;887:15;920:1;915:1967;;;;3023:4;3017:11;3004:24;;3074:4;3063:9;3059:20;3053:4;3046:34;880:2214;;915:1967;1097:4;1091:11;1078:24;;1756:2;1747:7;1743:16;2138:9;2131:17;2125:4;2121:28;2109:9;2098;2094:25;2090:60;2186:7;2182:2;2178:16;2438:6;2424:9;2417:17;2411:4;2407:28;2395:9;2387:6;2383:22;2379:57;2375:70;2212:425;2471:3;2467:2;2464:11;2212:425;;;2615:2;2609:9;2605:2;2598:21;2512:4;2508:2;2504:13;2498:19;;2552:4;2548:2;2544:13;2538:19;;2212:425;;;2216:247;2673:7;2662:9;2655:26;2863:2;2859:7;2854:2;2850;2846:11;2842:25;2836:4;2829:39;922:1960;;;880:2214;;3121:9;3114:16;;;567:2570;;;;;:::o;256:301::-;358:12;399:6;:13;390:6;:22;382:59;;;;;;;;;;;;;;;;;;;;;;459:91;478:6;498;534;518;:13;:22;459:5;:91::i;:::-;452:98;;256:301;;;;:::o;834:176:32:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;576:213:15:-;671:20;694:17;;;;;;;;;;;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;694:38:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;694:38:15;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;694:38:15;;;;;;;;;671:61;;742:40;759:4;764:8;774:7;742:16;:40::i;:::-;576:213;;;:::o;3718:338:32:-;3804:7;3901:1;3897;:5;3904:12;3889:28;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;3927:17;;4048:1;4041:8;;;3718:338;;;;;:::o;795:323:15:-;349:42;909:22;;:8;:22;;;906:147;;;986:12;:17;;1010:7;986:36;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;986:36:15;;1036:7;;906:147;1070:8;1063:25;;;1089:12;1103:7;1063:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1063:48:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1063:48:15;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1063:48:15;;;;;;;;;;795:323;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:150;;375:6;369:13;360:22;;387:41;422:5;387:41;;;354:79;;;;;440:128;;521:6;515:13;506:22;;533:30;557:5;533:30;;;500:68;;;;;589:336;;;703:3;696:4;688:6;684:17;680:27;670:2;;721:1;718;711:12;670:2;754:6;741:20;731:30;;781:18;773:6;770:30;767:2;;;813:1;810;803:12;767:2;847:4;839:6;835:17;823:29;;898:3;890:4;882:6;878:17;868:8;864:32;861:41;858:2;;;915:1;912;905:12;858:2;663:262;;;;;;934:440;;1035:3;1028:4;1020:6;1016:17;1012:27;1002:2;;1053:1;1050;1043:12;1002:2;1090:6;1077:20;1112:64;1127:48;1168:6;1127:48;;;1112:64;;;1103:73;;1196:6;1189:5;1182:21;1232:4;1224:6;1220:17;1265:4;1258:5;1254:16;1300:3;1291:6;1286:3;1282:16;1279:25;1276:2;;;1317:1;1314;1307:12;1276:2;1327:41;1361:6;1356:3;1351;1327:41;;;995:379;;;;;;;;1382:170;;1482:6;1469:20;1460:29;;1494:53;1541:5;1494:53;;;1454:98;;;;;1559:130;;1639:6;1626:20;1617:29;;1651:33;1678:5;1651:33;;;1611:78;;;;;1696:241;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1851:1;1868:53;1913:7;1904:6;1893:9;1889:22;1868:53;;;1858:63;;1830:97;1762:175;;;;;1944:263;;2059:2;2047:9;2038:7;2034:23;2030:32;2027:2;;;2075:1;2072;2065:12;2027:2;2110:1;2127:64;2183:7;2174:6;2163:9;2159:22;2127:64;;;2117:74;;2089:108;2021:186;;;;;2214:279;;2337:2;2325:9;2316:7;2312:23;2308:32;2305:2;;;2353:1;2350;2343:12;2305:2;2388:1;2405:72;2469:7;2460:6;2449:9;2445:22;2405:72;;;2395:82;;2367:116;2299:194;;;;;2500:470;;;2630:2;2618:9;2609:7;2605:23;2601:32;2598:2;;;2646:1;2643;2636:12;2598:2;2681:1;2698:53;2743:7;2734:6;2723:9;2719:22;2698:53;;;2688:63;;2660:97;2816:2;2805:9;2801:18;2788:32;2840:18;2832:6;2829:30;2826:2;;;2872:1;2869;2862:12;2826:2;2892:62;2946:7;2937:6;2926:9;2922:22;2892:62;;;2882:72;;2767:193;2592:378;;;;;;2977:741;;;;;;3151:3;3139:9;3130:7;3126:23;3122:33;3119:2;;;3168:1;3165;3158:12;3119:2;3203:1;3220:53;3265:7;3256:6;3245:9;3241:22;3220:53;;;3210:63;;3182:97;3310:2;3328:53;3373:7;3364:6;3353:9;3349:22;3328:53;;;3318:63;;3289:98;3418:2;3436:53;3481:7;3472:6;3461:9;3457:22;3436:53;;;3426:63;;3397:98;3554:2;3543:9;3539:18;3526:32;3578:18;3570:6;3567:30;3564:2;;;3610:1;3607;3600:12;3564:2;3638:64;3694:7;3685:6;3674:9;3670:22;3638:64;;;3628:74;;;;3505:203;3113:605;;;;;;;;;3725:257;;3837:2;3825:9;3816:7;3812:23;3808:32;3805:2;;;3853:1;3850;3843:12;3805:2;3888:1;3905:61;3958:7;3949:6;3938:9;3934:22;3905:61;;;3895:71;;3867:105;3799:183;;;;;3989:574;;;4128:2;4116:9;4107:7;4103:23;4099:32;4096:2;;;4144:1;4141;4134:12;4096:2;4207:1;4196:9;4192:17;4179:31;4230:18;4222:6;4219:30;4216:2;;;4262:1;4259;4252:12;4216:2;4282:62;4336:7;4327:6;4316:9;4312:22;4282:62;;;4272:72;;4158:192;4409:2;4398:9;4394:18;4381:32;4433:18;4425:6;4422:30;4419:2;;;4465:1;4462;4455:12;4419:2;4485:62;4539:7;4530:6;4519:9;4515:22;4485:62;;;4475:72;;4360:193;4090:473;;;;;;4570:281;;4694:2;4682:9;4673:7;4669:23;4665:32;4662:2;;;4710:1;4707;4700:12;4662:2;4745:1;4762:73;4827:7;4818:6;4807:9;4803:22;4762:73;;;4752:83;;4724:117;4656:195;;;;;4858:142;4949:45;4988:5;4949:45;;;4944:3;4937:58;4931:69;;;5007:113;5090:24;5108:5;5090:24;;;5085:3;5078:37;5072:48;;;5127:104;5204:21;5219:5;5204:21;;;5199:3;5192:34;5186:45;;;5238:110;5319:23;5336:5;5319:23;;;5314:3;5307:36;5301:47;;;5378:297;;5492:70;5555:6;5550:3;5492:70;;;5485:77;;5574:43;5610:6;5605:3;5598:5;5574:43;;;5639:29;5661:6;5639:29;;;5634:3;5630:39;5623:46;;5478:197;;;;;;5683:343;;5793:38;5825:5;5793:38;;;5843:70;5906:6;5901:3;5843:70;;;5836:77;;5918:52;5963:6;5958:3;5951:4;5944:5;5940:16;5918:52;;;5991:29;6013:6;5991:29;;;5986:3;5982:39;5975:46;;5773:253;;;;;;6033:356;;6161:38;6193:5;6161:38;;;6211:88;6292:6;6287:3;6211:88;;;6204:95;;6304:52;6349:6;6344:3;6337:4;6330:5;6326:16;6304:52;;;6377:6;6372:3;6368:16;6361:23;;6141:248;;;;;;6396:166;6499:57;6550:5;6499:57;;;6494:3;6487:70;6481:81;;;6569:168;6673:58;6725:5;6673:58;;;6668:3;6661:71;6655:82;;;6744:200;6864:74;6932:5;6864:74;;;6859:3;6852:87;6846:98;;;6951:347;;7063:39;7096:5;7063:39;;;7114:71;7178:6;7173:3;7114:71;;;7107:78;;7190:52;7235:6;7230:3;7223:4;7216:5;7212:16;7190:52;;;7263:29;7285:6;7263:29;;;7258:3;7254:39;7247:46;;7043:255;;;;;;7306:320;;7466:67;7530:2;7525:3;7466:67;;;7459:74;;7566:22;7562:1;7557:3;7553:11;7546:43;7617:2;7612:3;7608:12;7601:19;;7452:174;;;;7635:327;;7795:67;7859:2;7854:3;7795:67;;;7788:74;;7895:29;7891:1;7886:3;7882:11;7875:50;7953:2;7948:3;7944:12;7937:19;;7781:181;;;;7971:318;;8131:67;8195:2;8190:3;8131:67;;;8124:74;;8231:20;8227:1;8222:3;8218:11;8211:41;8280:2;8275:3;8271:12;8264:19;;8117:172;;;;8298:332;;8458:67;8522:2;8517:3;8458:67;;;8451:74;;8558:34;8554:1;8549:3;8545:11;8538:55;8621:2;8616:3;8612:12;8605:19;;8444:186;;;;8639:296;;8816:83;8897:1;8892:3;8816:83;;;8809:90;;8927:1;8922:3;8918:11;8911:18;;8802:133;;;;8944:324;;9104:67;9168:2;9163:3;9104:67;;;9097:74;;9204:26;9200:1;9195:3;9191:11;9184:47;9259:2;9254:3;9250:12;9243:19;;9090:178;;;;9277:331;;9437:67;9501:2;9496:3;9437:67;;;9430:74;;9537:33;9533:1;9528:3;9524:11;9517:54;9599:2;9594:3;9590:12;9583:19;;9423:185;;;;9616:113;9699:24;9717:5;9699:24;;;9694:3;9687:37;9681:48;;;9736:890;;10064:93;10153:3;10144:6;10064:93;;;10057:100;;10175:93;10264:3;10255:6;10175:93;;;10168:100;;10286:93;10375:3;10366:6;10286:93;;;10279:100;;10397:93;10486:3;10477:6;10397:93;;;10390:100;;10508:93;10597:3;10588:6;10508:93;;;10501:100;;10618:3;10611:10;;10045:581;;;;;;;;;10633:370;;10831:147;10974:3;10831:147;;;10824:154;;10995:3;10988:10;;10812:191;;;;11010:213;;11128:2;11117:9;11113:18;11105:26;;11142:71;11210:1;11199:9;11195:17;11186:6;11142:71;;;11099:124;;;;;11230:340;;11384:2;11373:9;11369:18;11361:26;;11398:79;11474:1;11463:9;11459:17;11450:6;11398:79;;;11488:72;11556:2;11545:9;11541:18;11532:6;11488:72;;;11355:215;;;;;;11577:431;;11749:2;11738:9;11734:18;11726:26;;11763:71;11831:1;11820:9;11816:17;11807:6;11763:71;;;11845:72;11913:2;11902:9;11898:18;11889:6;11845:72;;;11928:70;11994:2;11983:9;11979:18;11970:6;11928:70;;;11720:288;;;;;;;12015:408;;12179:2;12168:9;12164:18;12156:26;;12193:71;12261:1;12250:9;12246:17;12237:6;12193:71;;;12312:9;12306:4;12302:20;12297:2;12286:9;12282:18;12275:48;12337:76;12408:4;12399:6;12337:76;;;12329:84;;12150:273;;;;;;12430:201;;12542:2;12531:9;12527:18;12519:26;;12556:65;12618:1;12607:9;12603:17;12594:6;12556:65;;;12513:118;;;;;12638:297;;12774:2;12763:9;12759:18;12751:26;;12824:9;12818:4;12814:20;12810:1;12799:9;12795:17;12788:47;12849:76;12920:4;12911:6;12849:76;;;12841:84;;12745:190;;;;;12942:253;;13080:2;13069:9;13065:18;13057:26;;13094:91;13182:1;13171:9;13167:17;13158:6;13094:91;;;13051:144;;;;;13202:255;;13341:2;13330:9;13326:18;13318:26;;13355:92;13444:1;13433:9;13429:17;13420:6;13355:92;;;13312:145;;;;;13464:287;;13619:2;13608:9;13604:18;13596:26;;13633:108;13738:1;13727:9;13723:17;13714:6;13633:108;;;13590:161;;;;;13758:301;;13896:2;13885:9;13881:18;13873:26;;13946:9;13940:4;13936:20;13932:1;13921:9;13917:17;13910:47;13971:78;14044:4;14035:6;13971:78;;;13963:86;;13867:192;;;;;14066:407;;14257:2;14246:9;14242:18;14234:26;;14307:9;14301:4;14297:20;14293:1;14282:9;14278:17;14271:47;14332:131;14458:4;14332:131;;;14324:139;;14228:245;;;;14480:407;;14671:2;14660:9;14656:18;14648:26;;14721:9;14715:4;14711:20;14707:1;14696:9;14692:17;14685:47;14746:131;14872:4;14746:131;;;14738:139;;14642:245;;;;14894:407;;15085:2;15074:9;15070:18;15062:26;;15135:9;15129:4;15125:20;15121:1;15110:9;15106:17;15099:47;15160:131;15286:4;15160:131;;;15152:139;;15056:245;;;;15308:407;;15499:2;15488:9;15484:18;15476:26;;15549:9;15543:4;15539:20;15535:1;15524:9;15520:17;15513:47;15574:131;15700:4;15574:131;;;15566:139;;15470:245;;;;15722:407;;15913:2;15902:9;15898:18;15890:26;;15963:9;15957:4;15953:20;15949:1;15938:9;15934:17;15927:47;15988:131;16114:4;15988:131;;;15980:139;;15884:245;;;;16136:407;;16327:2;16316:9;16312:18;16304:26;;16377:9;16371:4;16367:20;16363:1;16352:9;16348:17;16341:47;16402:131;16528:4;16402:131;;;16394:139;;16298:245;;;;16550:213;;16668:2;16657:9;16653:18;16645:26;;16682:71;16750:1;16739:9;16735:17;16726:6;16682:71;;;16639:124;;;;;16770:428;;16944:2;16933:9;16929:18;16921:26;;16958:71;17026:1;17015:9;17011:17;17002:6;16958:71;;;17077:9;17071:4;17067:20;17062:2;17051:9;17047:18;17040:48;17102:86;17183:4;17174:6;17166;17102:86;;;17094:94;;16915:283;;;;;;;17205:256;;17267:2;17261:9;17251:19;;17305:4;17297:6;17293:17;17404:6;17392:10;17389:22;17368:18;17356:10;17353:34;17350:62;17347:2;;;17425:1;17422;17415:12;17347:2;17445:10;17441:2;17434:22;17245:216;;;;;17468:321;;17611:18;17603:6;17600:30;17597:2;;;17643:1;17640;17633:12;17597:2;17710:4;17706:9;17699:4;17691:6;17687:17;17683:33;17675:41;;17774:4;17768;17764:15;17756:23;;17534:255;;;;17796:121;;17889:5;17883:12;17873:22;;17854:63;;;;17924:122;;18018:5;18012:12;18002:22;;17983:63;;;;18054:162;;18168:6;18163:3;18156:19;18205:4;18200:3;18196:14;18181:29;;18149:67;;;;;18225:144;;18360:3;18345:18;;18338:31;;;;;18378:163;;18493:6;18488:3;18481:19;18530:4;18525:3;18521:14;18506:29;;18474:67;;;;;18549:91;;18611:24;18629:5;18611:24;;;18600:35;;18594:46;;;;18647:99;;18717:24;18735:5;18717:24;;;18706:35;;18700:46;;;;18753:85;;18826:5;18819:13;18812:21;18801:32;;18795:43;;;;18845:144;;18917:66;18910:5;18906:78;18895:89;;18889:100;;;;18996:111;;19078:24;19096:5;19078:24;;;19067:35;;19061:46;;;;19114:121;;19187:42;19180:5;19176:54;19165:65;;19159:76;;;;19242:72;;19304:5;19293:16;;19287:27;;;;19321:129;;19408:37;19439:5;19408:37;;;19395:50;;19389:61;;;;19457:161;;19556:57;19607:5;19556:57;;;19543:70;;19537:81;;;;19625:128;;19724:24;19742:5;19724:24;;;19711:37;;19705:48;;;;19760:163;;19860:58;19912:5;19860:58;;;19847:71;;19841:82;;;;19930:129;;20030:24;20048:5;20030:24;;;20017:37;;20011:48;;;;20066:195;;20182:74;20250:5;20182:74;;;20169:87;;20163:98;;;;20268:145;;20384:24;20402:5;20384:24;;;20371:37;;20365:48;;;;20420:121;;20499:37;20530:5;20499:37;;;20486:50;;20480:61;;;;20548:108;;20627:24;20645:5;20627:24;;;20614:37;;20608:48;;;;20664:145;20745:6;20740:3;20735;20722:30;20801:1;20792:6;20787:3;20783:16;20776:27;20715:94;;;;20818:268;20883:1;20890:101;20904:6;20901:1;20898:13;20890:101;;;20980:1;20975:3;20971:11;20965:18;20961:1;20956:3;20952:11;20945:39;20926:2;20923:1;20919:10;20914:15;;20890:101;;;21006:6;21003:1;21000:13;20997:2;;;21071:1;21062:6;21057:3;21053:16;21046:27;20997:2;20867:219;;;;;21094:97;;21182:2;21178:7;21173:2;21166:5;21162:14;21158:28;21148:38;;21142:49;;;;21199:117;21268:24;21286:5;21268:24;;;21261:5;21258:35;21248:2;;21307:1;21304;21297:12;21248:2;21242:74;;21323:133;21400:32;21426:5;21400:32;;;21393:5;21390:43;21380:2;;21447:1;21444;21437:12;21380:2;21374:82;;21463:111;21529:21;21544:5;21529:21;;;21522:5;21519:32;21509:2;;21565:1;21562;21555:12;21509:2;21503:71;;21581:157;21670:44;21708:5;21670:44;;;21663:5;21660:55;21650:2;;21729:1;21726;21719:12;21650:2;21644:94;;21745:117;21814:24;21832:5;21814:24;;;21807:5;21804:35;21794:2;;21853:1;21850;21843:12;21794:2;21788:74;", - "source": "/*\n Main contract to handle Aave flashloans on Compound Finance.\n (D)edge's (A)ave (C)ommon Proxy.\n*/\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\nimport \"../lib/BytesLib.sol\";\nimport \"../lib/aave/FlashLoanReceiverBase.sol\";\nimport \"../lib/dapphub/Proxy.sol\";\n\nimport \"../interfaces/IERC20.sol\";\n\ncontract DACProxy is\n DSProxy(address(1)),\n FlashLoanReceiverBase,\n BytesLibLite\n{\n // TODO: Change this value\n address payable constant protocolFeePayoutAddress = 0x56D5e01D5D2F853aA8f4ac5d2FfB4cBBCa9e2b0f;\n\n constructor(address _cacheAddr) public {\n setCache(_cacheAddr);\n }\n\n function() external payable {}\n\n // This is for Aave flashloans\n function executeOperation(\n address _reserve,\n uint256 _amount,\n uint256 _fee,\n bytes calldata _params\n ) external\n auth\n {\n // Assumes that once the action(s) are performed\n // we will have totalDebt would of _reserve to repay\n // aave and the protocol\n uint protocolFee = _fee.div(2);\n\n // Re-encodes new data \n // Function signature should conform to:\n /* (\n // Note: for address, as abiEncoder pads it to 32 bytes our starting position is 12\n // due to addresses having 20 bytes in length\n address - Address to call | start: 12; (20 bytes)\n bytes - Function sig | start: 32; (4 bytes)\n uint - Data of _amount | start: 36; (32 bytes)\n uint - Data of _aaveFee | start: 68; (32 bytes)\n uint - Data of _protocolFee | start: 100; (32 bytes)\n bytes - Data of _data | start: 132; (dynamic length)\n )\n\n i.e.\n\n function myFunction(\n uint amount,\n uint aaveFee,\n uint protocolFee,\n bytes memory _data\n ) { ... }\n */\n address targetAddress = bytesToAddress(_params, 12);\n bytes memory fSig = slice(_params, 32, 4);\n bytes memory data = sliceToEnd(_params, 132);\n\n // Re-encodes function signature and injects new\n // _amount, _fee, and _protocolFee into _data\n bytes memory newData = abi.encodePacked(\n fSig,\n abi.encode(_amount),\n abi.encode(_fee),\n abi.encode(protocolFee),\n data\n );\n\n // Executes new target\n execute(targetAddress, newData);\n\n // Repays protocol fee\n if (_reserve == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {\n protocolFeePayoutAddress.call.value(protocolFee)(\"\");\n } else {\n IERC20(_reserve).transfer(protocolFeePayoutAddress, protocolFee);\n }\n\n // Repays aave\n transferFundsBackToPoolInternal(_reserve, _amount.add(_fee));\n }\n}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"foo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"bar\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"fax\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"addressesProvider\",\"outputs\":[{\"internalType\":\"contract ILendingPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"name\":\"setCache\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":\"DACProxy\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x60806040527324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b506040516200291d3803806200291d83398181016040526200008c9190810190620004f2565b600133600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a262000123816200013e60201b60201c565b505062000136816200013e60201b60201c565b5050620007d7565b600062000176336000357fffffffff00000000000000000000000000000000000000000000000000000000166200030460201b60201c565b620001b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001af9062000671565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916846000366040516200023c93929190620006b5565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ae9062000693565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003455760019050620004be565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003a65760019050620004be565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620004075760009050620004be565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401620004679392919062000634565b60206040518083038186803b1580156200048057600080fd5b505afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004bb91908101906200051e565b90505b92915050565b600081519050620004d581620007a3565b92915050565b600081519050620004ec81620007bd565b92915050565b6000602082840312156200050557600080fd5b60006200051584828501620004c4565b91505092915050565b6000602082840312156200053157600080fd5b60006200054184828501620004db565b91505092915050565b62000555816200070d565b82525050565b62000566816200072d565b82525050565b60006200057a8385620006eb565b93506200058983858462000783565b620005948362000792565b840190509392505050565b6000620005ae601483620006fc565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000620005f0601f83620006fc565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b6200062e8162000779565b82525050565b60006060820190506200064b60008301866200054a565b6200065a60208301856200054a565b6200066960408301846200055b565b949350505050565b600060208201905081810360008301526200068c816200059f565b9050919050565b60006020820190508181036000830152620006ae81620005e1565b9050919050565b6000604082019050620006cc600083018662000623565b8181036020830152620006e18184866200056c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200071a8262000759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b620007ae816200070d565b8114620007ba57600080fd5b50565b620007c88162000721565b8114620007d457600080fd5b50565b61213680620007e76000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b591908101906116a0565b610258565b005b6100d660048036036100d1919081019061171b565b61036e565b6040516100e39190611cb5565b60405180910390f35b61010660048036036101019190810190611818565b61052a565b604051610114929190611c6a565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611cf2565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611884565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611bef565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be91908101906116a0565b610833565b6040516101d09190611c9a565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611cd7565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611d0d565b60405180910390f35b34801561023b57600080fd5b506102566004803603610251919081019061176f565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611d4a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611daa565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611cb5565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d991908101906116c9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611cb5565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd91908101906116c9565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611d4a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611dea565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611d4a565b60405180910390fd5b6000610ab76002856110fc90919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c611146565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050602060046111b3565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506084611275565b905060608289604051602001610bc89190611e0a565b60405160208183030381529060405289604051602001610be89190611e0a565b60405160208183030381529060405287604051602001610c089190611e0a565b60405160208183030381529060405285604051602001610c2c959493929190611b8f565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610db55773773ccbfb422850617a5680d40b1260422d072f4173ffffffffffffffffffffffffffffffffffffffff16610ccf6002876110fc90919063ffffffff16565b604051610cdb90611bda565b60006040518083038185875af1925050503d8060008114610d18576040519150601f19603f3d011682016040523d82523d6000602084013e610d1d565b606091505b50505073abccb8f0a3c206bb0468c52ccc20f3b81077417b73ffffffffffffffffffffffffffffffffffffffff16610d5f6002876110fc90919063ffffffff16565b604051610d6b90611bda565b60006040518083038185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b505050610f20565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f41610dfa6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610e17929190611c0a565b602060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6991908101906117ef565b508973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b610eaf6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610ecc929190611c0a565b602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f1e91908101906117ef565b505b610f3c8a610f378a8c6112d090919063ffffffff16565b611325565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8757600190506110f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe657600190506110f6565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561104557600090506110f6565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b81526004016110a393929190611c33565b60206040518083038186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f391908101906117ef565b90505b92915050565b600061113e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113d9565b905092915050565b6000601482018351101561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690611d8a565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290611dca565b60405180910390fd5b606082156000811461121857604051915060208201604052611269565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112565780518352602083019250602081019050611239565b50868552601f19601f8301166040525050505b50809150509392505050565b6060825182106112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611dca565b60405180910390fd5b6112c88383848651036111b3565b905092915050565b60008082840190508381101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290611d6a565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561138f57600080fd5b505afa1580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906116f2565b90506113d481848461143a565b505050565b60008083118290611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179190611d28565b60405180910390fd5b50600083858161142c57fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f0578273ffffffffffffffffffffffffffffffffffffffff16816040516114a690611bda565b60006040518083038185875af1925050503d80600081146114e3576040519150601f19603f3d011682016040523d82523d6000602084013e6114e8565b606091505b50505061157f565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161152b929190611c0a565b602060405180830381600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157d91908101906117ef565b505b505050565b60008135905061159381612080565b92915050565b6000815190506115a881612080565b92915050565b6000815190506115bd81612097565b92915050565b6000815190506115d2816120ae565b92915050565b60008083601f8401126115ea57600080fd5b8235905067ffffffffffffffff81111561160357600080fd5b60208301915083600182028301111561161b57600080fd5b9250929050565b600082601f83011261163357600080fd5b813561164661164182611e84565b611e57565b9150808252602083016020830185838301111561166257600080fd5b61166d83828461202d565b50505092915050565b600081359050611685816120c5565b92915050565b60008135905061169a816120dc565b92915050565b6000602082840312156116b257600080fd5b60006116c084828501611584565b91505092915050565b6000602082840312156116db57600080fd5b60006116e984828501611599565b91505092915050565b60006020828403121561170457600080fd5b6000611712848285016115ae565b91505092915050565b6000806040838503121561172e57600080fd5b600061173c85828601611584565b925050602083013567ffffffffffffffff81111561175957600080fd5b61176585828601611622565b9150509250929050565b60008060008060006080868803121561178757600080fd5b600061179588828901611584565b95505060206117a68882890161168b565b94505060406117b78882890161168b565b935050606086013567ffffffffffffffff8111156117d457600080fd5b6117e0888289016115d8565b92509250509295509295909350565b60006020828403121561180157600080fd5b600061180f848285016115c3565b91505092915050565b6000806040838503121561182b57600080fd5b600083013567ffffffffffffffff81111561184557600080fd5b61185185828601611622565b925050602083013567ffffffffffffffff81111561186e57600080fd5b61187a85828601611622565b9150509250929050565b60006020828403121561189657600080fd5b60006118a484828501611676565b91505092915050565b6118b681611f8b565b82525050565b6118c581611ef3565b82525050565b6118d481611f17565b82525050565b6118e381611f23565b82525050565b60006118f58385611ec6565b935061190283858461202d565b61190b8361206f565b840190509392505050565b600061192182611eb0565b61192b8185611ec6565b935061193b81856020860161203c565b6119448161206f565b840191505092915050565b600061195a82611eb0565b6119648185611ed7565b935061197481856020860161203c565b80840191505092915050565b61198981611f9d565b82525050565b61199881611fc1565b82525050565b6119a781611fe5565b82525050565b60006119b882611ebb565b6119c28185611ee2565b93506119d281856020860161203c565b6119db8161206f565b840191505092915050565b60006119f3601483611ee2565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000611a33601b83611ee2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611a73601283611ee2565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611ab3602083611ee2565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611af3600083611ed7565b9150600082019050919050565b6000611b0d601883611ee2565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b6000611b4d601f83611ee2565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611b8981611f81565b82525050565b6000611b9b828861194f565b9150611ba7828761194f565b9150611bb3828661194f565b9150611bbf828561194f565b9150611bcb828461194f565b91508190509695505050505050565b6000611be582611ae6565b9150819050919050565b6000602082019050611c0460008301846118bc565b92915050565b6000604082019050611c1f60008301856118ad565b611c2c6020830184611b80565b9392505050565b6000606082019050611c4860008301866118bc565b611c5560208301856118bc565b611c6260408301846118da565b949350505050565b6000604082019050611c7f60008301856118bc565b8181036020830152611c918184611916565b90509392505050565b6000602082019050611caf60008301846118cb565b92915050565b60006020820190508181036000830152611ccf8184611916565b905092915050565b6000602082019050611cec6000830184611980565b92915050565b6000602082019050611d07600083018461198f565b92915050565b6000602082019050611d22600083018461199e565b92915050565b60006020820190508181036000830152611d4281846119ad565b905092915050565b60006020820190508181036000830152611d63816119e6565b9050919050565b60006020820190508181036000830152611d8381611a26565b9050919050565b60006020820190508181036000830152611da381611a66565b9050919050565b60006020820190508181036000830152611dc381611aa6565b9050919050565b60006020820190508181036000830152611de381611b00565b9050919050565b60006020820190508181036000830152611e0381611b40565b9050919050565b6000602082019050611e1f6000830184611b80565b92915050565b6000604082019050611e3a6000830186611b80565b8181036020830152611e4d8184866118e9565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611e7a57600080fd5b8060405250919050565b600067ffffffffffffffff821115611e9b57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611efe82611f61565b9050919050565b6000611f1082611f61565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611f5a82611ef3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f9682612009565b9050919050565b6000611fa882611faf565b9050919050565b6000611fba82611f61565b9050919050565b6000611fcc82611fd3565b9050919050565b6000611fde82611f61565b9050919050565b6000611ff082611ff7565b9050919050565b600061200282611f61565b9050919050565b60006120148261201b565b9050919050565b600061202682611f61565b9050919050565b82818337600083830152505050565b60005b8381101561205a57808201518184015260208101905061203f565b83811115612069576000848401525b50505050565b6000601f19601f8301169050919050565b61208981611ef3565b811461209457600080fd5b50565b6120a081611f05565b81146120ab57600080fd5b50565b6120b781611f17565b81146120c257600080fd5b50565b6120ce81611f4f565b81146120d957600080fd5b50565b6120e581611f81565b81146120f057600080fd5b5056fea365627a7a72315820a7e949e4f7bad72e45825d8ae15370f38f5f0a3f0755fc55d0f5833c02f1aa736c6578706572696d656e74616cf564736f6c63430005100040", + "deployedBytecode": "0x6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b591908101906116a0565b610258565b005b6100d660048036036100d1919081019061171b565b61036e565b6040516100e39190611cb5565b60405180910390f35b61010660048036036101019190810190611818565b61052a565b604051610114929190611c6a565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611cf2565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611884565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611bef565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be91908101906116a0565b610833565b6040516101d09190611c9a565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611cd7565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611d0d565b60405180910390f35b34801561023b57600080fd5b506102566004803603610251919081019061176f565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611d4a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611daa565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611cb5565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d991908101906116c9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611cb5565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd91908101906116c9565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611d4a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611dea565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611d4a565b60405180910390fd5b6000610ab76002856110fc90919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c611146565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050602060046111b3565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506084611275565b905060608289604051602001610bc89190611e0a565b60405160208183030381529060405289604051602001610be89190611e0a565b60405160208183030381529060405287604051602001610c089190611e0a565b60405160208183030381529060405285604051602001610c2c959493929190611b8f565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610db55773773ccbfb422850617a5680d40b1260422d072f4173ffffffffffffffffffffffffffffffffffffffff16610ccf6002876110fc90919063ffffffff16565b604051610cdb90611bda565b60006040518083038185875af1925050503d8060008114610d18576040519150601f19603f3d011682016040523d82523d6000602084013e610d1d565b606091505b50505073abccb8f0a3c206bb0468c52ccc20f3b81077417b73ffffffffffffffffffffffffffffffffffffffff16610d5f6002876110fc90919063ffffffff16565b604051610d6b90611bda565b60006040518083038185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b505050610f20565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f41610dfa6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610e17929190611c0a565b602060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6991908101906117ef565b508973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b610eaf6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610ecc929190611c0a565b602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f1e91908101906117ef565b505b610f3c8a610f378a8c6112d090919063ffffffff16565b611325565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8757600190506110f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe657600190506110f6565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561104557600090506110f6565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b81526004016110a393929190611c33565b60206040518083038186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f391908101906117ef565b90505b92915050565b600061113e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113d9565b905092915050565b6000601482018351101561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690611d8a565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290611dca565b60405180910390fd5b606082156000811461121857604051915060208201604052611269565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112565780518352602083019250602081019050611239565b50868552601f19601f8301166040525050505b50809150509392505050565b6060825182106112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611dca565b60405180910390fd5b6112c88383848651036111b3565b905092915050565b60008082840190508381101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290611d6a565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561138f57600080fd5b505afa1580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906116f2565b90506113d481848461143a565b505050565b60008083118290611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179190611d28565b60405180910390fd5b50600083858161142c57fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f0578273ffffffffffffffffffffffffffffffffffffffff16816040516114a690611bda565b60006040518083038185875af1925050503d80600081146114e3576040519150601f19603f3d011682016040523d82523d6000602084013e6114e8565b606091505b50505061157f565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161152b929190611c0a565b602060405180830381600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157d91908101906117ef565b505b505050565b60008135905061159381612080565b92915050565b6000815190506115a881612080565b92915050565b6000815190506115bd81612097565b92915050565b6000815190506115d2816120ae565b92915050565b60008083601f8401126115ea57600080fd5b8235905067ffffffffffffffff81111561160357600080fd5b60208301915083600182028301111561161b57600080fd5b9250929050565b600082601f83011261163357600080fd5b813561164661164182611e84565b611e57565b9150808252602083016020830185838301111561166257600080fd5b61166d83828461202d565b50505092915050565b600081359050611685816120c5565b92915050565b60008135905061169a816120dc565b92915050565b6000602082840312156116b257600080fd5b60006116c084828501611584565b91505092915050565b6000602082840312156116db57600080fd5b60006116e984828501611599565b91505092915050565b60006020828403121561170457600080fd5b6000611712848285016115ae565b91505092915050565b6000806040838503121561172e57600080fd5b600061173c85828601611584565b925050602083013567ffffffffffffffff81111561175957600080fd5b61176585828601611622565b9150509250929050565b60008060008060006080868803121561178757600080fd5b600061179588828901611584565b95505060206117a68882890161168b565b94505060406117b78882890161168b565b935050606086013567ffffffffffffffff8111156117d457600080fd5b6117e0888289016115d8565b92509250509295509295909350565b60006020828403121561180157600080fd5b600061180f848285016115c3565b91505092915050565b6000806040838503121561182b57600080fd5b600083013567ffffffffffffffff81111561184557600080fd5b61185185828601611622565b925050602083013567ffffffffffffffff81111561186e57600080fd5b61187a85828601611622565b9150509250929050565b60006020828403121561189657600080fd5b60006118a484828501611676565b91505092915050565b6118b681611f8b565b82525050565b6118c581611ef3565b82525050565b6118d481611f17565b82525050565b6118e381611f23565b82525050565b60006118f58385611ec6565b935061190283858461202d565b61190b8361206f565b840190509392505050565b600061192182611eb0565b61192b8185611ec6565b935061193b81856020860161203c565b6119448161206f565b840191505092915050565b600061195a82611eb0565b6119648185611ed7565b935061197481856020860161203c565b80840191505092915050565b61198981611f9d565b82525050565b61199881611fc1565b82525050565b6119a781611fe5565b82525050565b60006119b882611ebb565b6119c28185611ee2565b93506119d281856020860161203c565b6119db8161206f565b840191505092915050565b60006119f3601483611ee2565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000611a33601b83611ee2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611a73601283611ee2565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611ab3602083611ee2565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611af3600083611ed7565b9150600082019050919050565b6000611b0d601883611ee2565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b6000611b4d601f83611ee2565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611b8981611f81565b82525050565b6000611b9b828861194f565b9150611ba7828761194f565b9150611bb3828661194f565b9150611bbf828561194f565b9150611bcb828461194f565b91508190509695505050505050565b6000611be582611ae6565b9150819050919050565b6000602082019050611c0460008301846118bc565b92915050565b6000604082019050611c1f60008301856118ad565b611c2c6020830184611b80565b9392505050565b6000606082019050611c4860008301866118bc565b611c5560208301856118bc565b611c6260408301846118da565b949350505050565b6000604082019050611c7f60008301856118bc565b8181036020830152611c918184611916565b90509392505050565b6000602082019050611caf60008301846118cb565b92915050565b60006020820190508181036000830152611ccf8184611916565b905092915050565b6000602082019050611cec6000830184611980565b92915050565b6000602082019050611d07600083018461198f565b92915050565b6000602082019050611d22600083018461199e565b92915050565b60006020820190508181036000830152611d4281846119ad565b905092915050565b60006020820190508181036000830152611d63816119e6565b9050919050565b60006020820190508181036000830152611d8381611a26565b9050919050565b60006020820190508181036000830152611da381611a66565b9050919050565b60006020820190508181036000830152611dc381611aa6565b9050919050565b60006020820190508181036000830152611de381611b00565b9050919050565b60006020820190508181036000830152611e0381611b40565b9050919050565b6000602082019050611e1f6000830184611b80565b92915050565b6000604082019050611e3a6000830186611b80565b8181036020830152611e4d8184866118e9565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611e7a57600080fd5b8060405250919050565b600067ffffffffffffffff821115611e9b57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611efe82611f61565b9050919050565b6000611f1082611f61565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611f5a82611ef3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f9682612009565b9050919050565b6000611fa882611faf565b9050919050565b6000611fba82611f61565b9050919050565b6000611fcc82611fd3565b9050919050565b6000611fde82611f61565b9050919050565b6000611ff082611ff7565b9050919050565b600061200282611f61565b9050919050565b60006120148261201b565b9050919050565b600061202682611f61565b9050919050565b82818337600083830152505050565b60005b8381101561205a57808201518184015260208101905061203f565b83811115612069576000848401525b50505050565b6000601f19601f8301169050919050565b61208981611ef3565b811461209457600080fd5b50565b6120a081611f05565b81146120ab57600080fd5b50565b6120b781611f17565b81146120c257600080fd5b50565b6120ce81611f4f565b81146120d957600080fd5b50565b6120e581611f81565b81146120f057600080fd5b5056fea365627a7a72315820a7e949e4f7bad72e45825d8ae15370f38f5f0a3f0755fc55d0f5833c02f1aa736c6578706572696d656e74616cf564736f6c63430005100040", + "sourceMap": "318:2900:29:-;;;485:42:15;398:130;;;;;;;;;;;;;;;;;;;;648:76:29;8:9:-1;5:2;;;30:1;27;20:12;5:2;648:76:29;;;;;;;;;;;;;;;;;;;;;;;;359:1;1074:10:17;1066:5;;:18;;;;;;;;;;;;;;;;;;1111:10;1099:23;;;;;;;;;;;;1221:20:21;1230:10;1221:8;;;:20;;:::i;:::-;;1172:76;697:20:29;706:10;697:8;;;:20;;:::i;:::-;;648:76;318:2900;;2614:274:21;2710:4;1476:33:17;1489:10;1501:7;;;;1476:12;;;:33;;:::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;2760:1:21;2738:24;;:10;:24;;;;2730:68;;;;;;;;;;;;;;;;;;;;;;2829:10;2808:5;;:32;;;;;;;;;;;;;;;;;;2877:4;2870:11;;1544:1:17;;;2614:274:21;;;:::o;1558:375:17:-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1874:42:17;;;;;;;;;1867:49;;1558:375;;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;;;68:71;;;;;146:128;;227:6;221:13;212:22;;239:30;263:5;239:30;;;206:68;;;;;281:263;;396:2;384:9;375:7;371:23;367:32;364:2;;;412:1;409;402:12;364:2;447:1;464:64;520:7;511:6;500:9;496:22;464:64;;;454:74;;426:108;358:186;;;;;551:257;;663:2;651:9;642:7;638:23;634:32;631:2;;;679:1;676;669:12;631:2;714:1;731:61;784:7;775:6;764:9;760:22;731:61;;;721:71;;693:105;625:183;;;;;815:113;898:24;916:5;898:24;;;893:3;886:37;880:48;;;935:110;1016:23;1033:5;1016:23;;;1011:3;1004:36;998:47;;;1075:297;;1189:70;1252:6;1247:3;1189:70;;;1182:77;;1271:43;1307:6;1302:3;1295:5;1271:43;;;1336:29;1358:6;1336:29;;;1331:3;1327:39;1320:46;;1175:197;;;;;;1381:320;;1541:67;1605:2;1600:3;1541:67;;;1534:74;;1641:22;1637:1;1632:3;1628:11;1621:43;1692:2;1687:3;1683:12;1676:19;;1527:174;;;;1710:331;;1870:67;1934:2;1929:3;1870:67;;;1863:74;;1970:33;1966:1;1961:3;1957:11;1950:54;2032:2;2027:3;2023:12;2016:19;;1856:185;;;;2049:113;2132:24;2150:5;2132:24;;;2127:3;2120:37;2114:48;;;2169:431;;2341:2;2330:9;2326:18;2318:26;;2355:71;2423:1;2412:9;2408:17;2399:6;2355:71;;;2437:72;2505:2;2494:9;2490:18;2481:6;2437:72;;;2520:70;2586:2;2575:9;2571:18;2562:6;2520:70;;;2312:288;;;;;;;2607:407;;2798:2;2787:9;2783:18;2775:26;;2848:9;2842:4;2838:20;2834:1;2823:9;2819:17;2812:47;2873:131;2999:4;2873:131;;;2865:139;;2769:245;;;;3021:407;;3212:2;3201:9;3197:18;3189:26;;3262:9;3256:4;3252:20;3248:1;3237:9;3233:17;3226:47;3287:131;3413:4;3287:131;;;3279:139;;3183:245;;;;3435:428;;3609:2;3598:9;3594:18;3586:26;;3623:71;3691:1;3680:9;3676:17;3667:6;3623:71;;;3742:9;3736:4;3732:20;3727:2;3716:9;3712:18;3705:48;3767:86;3848:4;3839:6;3831;3767:86;;;3759:94;;3580:283;;;;;;;3871:162;;3985:6;3980:3;3973:19;4022:4;4017:3;4013:14;3998:29;;3966:67;;;;;4042:163;;4157:6;4152:3;4145:19;4194:4;4189:3;4185:14;4170:29;;4138:67;;;;;4213:91;;4275:24;4293:5;4275:24;;;4264:35;;4258:46;;;;4311:85;;4384:5;4377:13;4370:21;4359:32;;4353:43;;;;4403:144;;4475:66;4468:5;4464:78;4453:89;;4447:100;;;;4554:121;;4627:42;4620:5;4616:54;4605:65;;4599:76;;;;4682:72;;4744:5;4733:16;;4727:27;;;;4762:145;4843:6;4838:3;4833;4820:30;4899:1;4890:6;4885:3;4881:16;4874:27;4813:94;;;;4915:97;;5003:2;4999:7;4994:2;4987:5;4983:14;4979:28;4969:38;;4963:49;;;;5020:117;5089:24;5107:5;5089:24;;;5082:5;5079:35;5069:2;;5128:1;5125;5118:12;5069:2;5063:74;;5144:111;5210:21;5225:5;5210:21;;;5203:5;5200:32;5190:2;;5246:1;5243;5236:12;5190:2;5184:71;;318:2900:29;;;;;;;", + "deployedSourceMap": "318:2900:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1135:130:17;;;;;;;;;;;;;;;;:::i;:::-;;1748:840:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1360:382;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1109:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1109:25:21;;;:::i;:::-;;;;;;;;;;;;;;;;1271:167:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1271:167:17;;;;;;;;;;;;;;;;:::i;:::-;;1002:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1002:26:17;;;:::i;:::-;;;;;;;;;;;;;;;;2614:274:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2614:274:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;966:30:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:30:17;;;:::i;:::-;;;;;;;;;;;;;;;;398:130:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:130:15;;;:::i;:::-;;;;;;;;;;;;;;;;801:2415:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;801:2415:29;;;;;;;;;;;;;;;;:::i;:::-;;1135:130:17;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1219:6;1211:5;;:14;;;;;;;;;;;;;;;;;;1252:5;;;;;;;;;;;1240:18;;;;;;;;;;;;1135:130;:::o;1748:840:21:-;1876:21;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;1940:1:21;1921:21;;:7;:21;;;;1913:66;;;;;;;;;;;;;;;;;;;;;;2147:1;2144;2136:5;2130:12;2123:4;2116:5;2112:16;2103:7;2096:4;2091:3;2087:14;2074:75;2174:14;2220:4;2214:11;2202:23;;2301:4;2297:9;2290:4;2283;2277;2273:15;2269:26;2265:42;2255:8;2251:57;2245:4;2238:71;2339:4;2329:8;2322:22;2396:4;2393:1;2386:4;2376:8;2372:19;2357:44;2429:9;2422:17;2457:1;2452:120;;;;2415:157;;2452:120;2553:4;2546;2536:8;2532:19;2525:33;2415:157;;2043:539;;1544:1:17;;;1748:840:21;;;;:::o;1360:382::-;1465:14;1481:21;1527:5;;;;;;;;;;;:10;;;1538:5;1527:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:17:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1527:17:21;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1527:17:21;;;;;;;;;1518:26;;1576:1;1558:20;;:6;:20;;;1554:138;;;1663:5;;;;;;;;;;;:11;;;1675:5;1663:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1663:18:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1663:18:21;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1663:18:21;;;;;;;;;1654:27;;1554:138;1713:22;1721:6;1729:5;1713:7;:22::i;:::-;1702:33;;1360:382;;;;;:::o;1109:25::-;;;;;;;;;;;;;:::o;1271:167:17:-;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1371:10;1359:9;;:22;;;;;;;;;;;;;;;;;;1420:9;;;;;;;;;;;1396:35;;;;;;;;;;;;1271:167;:::o;1002:26::-;;;;;;;;;;;;;:::o;2614:274:21:-;2710:4;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;2760:1:21;2738:24;;:10;:24;;;;2730:68;;;;;;;;;;;;;;;;;;;;;;2829:10;2808:5;;:32;;;;;;;;;;;;;;;;;;2877:4;2870:11;;1544:1:17;;;2614:274:21;;;:::o;966:30:17:-;;;;;;;;;;;;;:::o;398:130:15:-;;;;;;;;;;;;;:::o;801:2415:29:-;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1125:16:29;1144:11;1153:1;1144:4;:8;;:11;;;;:::i;:::-;1125:30;;2122:21;2146:27;2161:7;;2146:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2146:27:29;;;;;;2170:2;2146:14;:27::i;:::-;2122:51;;2183:17;2207:21;2213:7;;2207:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2207:21:29;;;;;;2222:2;2226:1;2207:5;:21::i;:::-;2183:45;;2238:17;2262:24;2273:7;;2262:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2262:24:29;;;;;;2282:3;2262:10;:24::i;:::-;2238:48;;2408:20;2461:4;2490:7;2479:19;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2479:19:29;;;2523:4;2512:16;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2512:16:29;;;2553:11;2542:23;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2542:23:29;;;2579:4;2431:162;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2431:162:29;;;2408:185;;2635:31;2643:13;2658:7;2635;:31::i;:::-;;2724:42;2712:54;;:8;:54;;;2708:408;;;498:42;2782:30;;2819:18;2835:1;2819:11;:15;;:18;;;;:::i;:::-;2782:60;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2782:60:29;;599:42;2856:30;;2893:18;2909:1;2893:11;:15;;:18;;;;:::i;:::-;2856:60;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2856:60:29;;2708:408;;;2954:8;2947:25;;;498:42;3000:18;3016:1;3000:11;:15;;:18;;;;:::i;:::-;2947:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2947:72:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2947:72:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2947:72:29;;;;;;;;;;3040:8;3033:25;;;599:42;3086:18;3102:1;3086:11;:15;;:18;;;;:::i;:::-;3033:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3033:72:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3033:72:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3033:72:29;;;;;;;;;;2708:408;3149:60;3181:8;3191:17;3203:4;3191:7;:11;;:17;;;;:::i;:::-;3149:31;:60::i;:::-;1544:1:17;;;;;801:2415:29;;;;;:::o;1558:375:17:-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1874:42:17;;;;;;;;;1867:49;;1558:375;;;;;:::o;3073:130:32:-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3150:46;;3073:130;;;;:::o;3143:358:14:-;3227:7;3281:2;3272:6;:11;3254:6;:13;:30;;3246:61;;;;;;;;;;;;;;;;;;;;;;3317:19;3428:27;3418:6;3411:4;3403:6;3399:17;3395:30;3389:37;3385:71;3370:86;;3483:11;3476:18;;;3143:358;;;;:::o;567:2570::-;713:12;776:7;767:6;:16;749:6;:13;:35;;741:72;;;;;;;;;;;;;;;;;;;;;;824:22;894:7;887:15;920:1;915:1967;;;;3023:4;3017:11;3004:24;;3074:4;3063:9;3059:20;3053:4;3046:34;880:2214;;915:1967;1097:4;1091:11;1078:24;;1756:2;1747:7;1743:16;2138:9;2131:17;2125:4;2121:28;2109:9;2098;2094:25;2090:60;2186:7;2182:2;2178:16;2438:6;2424:9;2417:17;2411:4;2407:28;2395:9;2387:6;2383:22;2379:57;2375:70;2212:425;2471:3;2467:2;2464:11;2212:425;;;2615:2;2609:9;2605:2;2598:21;2512:4;2508:2;2504:13;2498:19;;2552:4;2548:2;2544:13;2538:19;;2212:425;;;2216:247;2673:7;2662:9;2655:26;2863:2;2859:7;2854:2;2850;2846:11;2842:25;2836:4;2829:39;922:1960;;;880:2214;;3121:9;3114:16;;;567:2570;;;;;:::o;256:301::-;358:12;399:6;:13;390:6;:22;382:59;;;;;;;;;;;;;;;;;;;;;;459:91;478:6;498;534;518;:13;:22;459:5;:91::i;:::-;452:98;;256:301;;;;:::o;834:176:32:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;576:213:15:-;671:20;694:17;;;;;;;;;;;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;694:38:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;694:38:15;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;694:38:15;;;;;;;;;671:61;;742:40;759:4;764:8;774:7;742:16;:40::i;:::-;576:213;;;:::o;3718:338:32:-;3804:7;3901:1;3897;:5;3904:12;3889:28;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;3927:17;;4048:1;4041:8;;;3718:338;;;;;:::o;795:323:15:-;349:42;909:22;;:8;:22;;;906:147;;;986:12;:17;;1010:7;986:36;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;986:36:15;;1036:7;;906:147;1070:8;1063:25;;;1089:12;1103:7;1063:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1063:48:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1063:48:15;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1063:48:15;;;;;;;;;;795:323;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:150;;375:6;369:13;360:22;;387:41;422:5;387:41;;;354:79;;;;;440:128;;521:6;515:13;506:22;;533:30;557:5;533:30;;;500:68;;;;;589:336;;;703:3;696:4;688:6;684:17;680:27;670:2;;721:1;718;711:12;670:2;754:6;741:20;731:30;;781:18;773:6;770:30;767:2;;;813:1;810;803:12;767:2;847:4;839:6;835:17;823:29;;898:3;890:4;882:6;878:17;868:8;864:32;861:41;858:2;;;915:1;912;905:12;858:2;663:262;;;;;;934:440;;1035:3;1028:4;1020:6;1016:17;1012:27;1002:2;;1053:1;1050;1043:12;1002:2;1090:6;1077:20;1112:64;1127:48;1168:6;1127:48;;;1112:64;;;1103:73;;1196:6;1189:5;1182:21;1232:4;1224:6;1220:17;1265:4;1258:5;1254:16;1300:3;1291:6;1286:3;1282:16;1279:25;1276:2;;;1317:1;1314;1307:12;1276:2;1327:41;1361:6;1356:3;1351;1327:41;;;995:379;;;;;;;;1382:170;;1482:6;1469:20;1460:29;;1494:53;1541:5;1494:53;;;1454:98;;;;;1559:130;;1639:6;1626:20;1617:29;;1651:33;1678:5;1651:33;;;1611:78;;;;;1696:241;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1851:1;1868:53;1913:7;1904:6;1893:9;1889:22;1868:53;;;1858:63;;1830:97;1762:175;;;;;1944:263;;2059:2;2047:9;2038:7;2034:23;2030:32;2027:2;;;2075:1;2072;2065:12;2027:2;2110:1;2127:64;2183:7;2174:6;2163:9;2159:22;2127:64;;;2117:74;;2089:108;2021:186;;;;;2214:279;;2337:2;2325:9;2316:7;2312:23;2308:32;2305:2;;;2353:1;2350;2343:12;2305:2;2388:1;2405:72;2469:7;2460:6;2449:9;2445:22;2405:72;;;2395:82;;2367:116;2299:194;;;;;2500:470;;;2630:2;2618:9;2609:7;2605:23;2601:32;2598:2;;;2646:1;2643;2636:12;2598:2;2681:1;2698:53;2743:7;2734:6;2723:9;2719:22;2698:53;;;2688:63;;2660:97;2816:2;2805:9;2801:18;2788:32;2840:18;2832:6;2829:30;2826:2;;;2872:1;2869;2862:12;2826:2;2892:62;2946:7;2937:6;2926:9;2922:22;2892:62;;;2882:72;;2767:193;2592:378;;;;;;2977:741;;;;;;3151:3;3139:9;3130:7;3126:23;3122:33;3119:2;;;3168:1;3165;3158:12;3119:2;3203:1;3220:53;3265:7;3256:6;3245:9;3241:22;3220:53;;;3210:63;;3182:97;3310:2;3328:53;3373:7;3364:6;3353:9;3349:22;3328:53;;;3318:63;;3289:98;3418:2;3436:53;3481:7;3472:6;3461:9;3457:22;3436:53;;;3426:63;;3397:98;3554:2;3543:9;3539:18;3526:32;3578:18;3570:6;3567:30;3564:2;;;3610:1;3607;3600:12;3564:2;3638:64;3694:7;3685:6;3674:9;3670:22;3638:64;;;3628:74;;;;3505:203;3113:605;;;;;;;;;3725:257;;3837:2;3825:9;3816:7;3812:23;3808:32;3805:2;;;3853:1;3850;3843:12;3805:2;3888:1;3905:61;3958:7;3949:6;3938:9;3934:22;3905:61;;;3895:71;;3867:105;3799:183;;;;;3989:574;;;4128:2;4116:9;4107:7;4103:23;4099:32;4096:2;;;4144:1;4141;4134:12;4096:2;4207:1;4196:9;4192:17;4179:31;4230:18;4222:6;4219:30;4216:2;;;4262:1;4259;4252:12;4216:2;4282:62;4336:7;4327:6;4316:9;4312:22;4282:62;;;4272:72;;4158:192;4409:2;4398:9;4394:18;4381:32;4433:18;4425:6;4422:30;4419:2;;;4465:1;4462;4455:12;4419:2;4485:62;4539:7;4530:6;4519:9;4515:22;4485:62;;;4475:72;;4360:193;4090:473;;;;;;4570:281;;4694:2;4682:9;4673:7;4669:23;4665:32;4662:2;;;4710:1;4707;4700:12;4662:2;4745:1;4762:73;4827:7;4818:6;4807:9;4803:22;4762:73;;;4752:83;;4724:117;4656:195;;;;;4858:142;4949:45;4988:5;4949:45;;;4944:3;4937:58;4931:69;;;5007:113;5090:24;5108:5;5090:24;;;5085:3;5078:37;5072:48;;;5127:104;5204:21;5219:5;5204:21;;;5199:3;5192:34;5186:45;;;5238:110;5319:23;5336:5;5319:23;;;5314:3;5307:36;5301:47;;;5378:297;;5492:70;5555:6;5550:3;5492:70;;;5485:77;;5574:43;5610:6;5605:3;5598:5;5574:43;;;5639:29;5661:6;5639:29;;;5634:3;5630:39;5623:46;;5478:197;;;;;;5683:343;;5793:38;5825:5;5793:38;;;5843:70;5906:6;5901:3;5843:70;;;5836:77;;5918:52;5963:6;5958:3;5951:4;5944:5;5940:16;5918:52;;;5991:29;6013:6;5991:29;;;5986:3;5982:39;5975:46;;5773:253;;;;;;6033:356;;6161:38;6193:5;6161:38;;;6211:88;6292:6;6287:3;6211:88;;;6204:95;;6304:52;6349:6;6344:3;6337:4;6330:5;6326:16;6304:52;;;6377:6;6372:3;6368:16;6361:23;;6141:248;;;;;;6396:166;6499:57;6550:5;6499:57;;;6494:3;6487:70;6481:81;;;6569:168;6673:58;6725:5;6673:58;;;6668:3;6661:71;6655:82;;;6744:200;6864:74;6932:5;6864:74;;;6859:3;6852:87;6846:98;;;6951:347;;7063:39;7096:5;7063:39;;;7114:71;7178:6;7173:3;7114:71;;;7107:78;;7190:52;7235:6;7230:3;7223:4;7216:5;7212:16;7190:52;;;7263:29;7285:6;7263:29;;;7258:3;7254:39;7247:46;;7043:255;;;;;;7306:320;;7466:67;7530:2;7525:3;7466:67;;;7459:74;;7566:22;7562:1;7557:3;7553:11;7546:43;7617:2;7612:3;7608:12;7601:19;;7452:174;;;;7635:327;;7795:67;7859:2;7854:3;7795:67;;;7788:74;;7895:29;7891:1;7886:3;7882:11;7875:50;7953:2;7948:3;7944:12;7937:19;;7781:181;;;;7971:318;;8131:67;8195:2;8190:3;8131:67;;;8124:74;;8231:20;8227:1;8222:3;8218:11;8211:41;8280:2;8275:3;8271:12;8264:19;;8117:172;;;;8298:332;;8458:67;8522:2;8517:3;8458:67;;;8451:74;;8558:34;8554:1;8549:3;8545:11;8538:55;8621:2;8616:3;8612:12;8605:19;;8444:186;;;;8639:296;;8816:83;8897:1;8892:3;8816:83;;;8809:90;;8927:1;8922:3;8918:11;8911:18;;8802:133;;;;8944:324;;9104:67;9168:2;9163:3;9104:67;;;9097:74;;9204:26;9200:1;9195:3;9191:11;9184:47;9259:2;9254:3;9250:12;9243:19;;9090:178;;;;9277:331;;9437:67;9501:2;9496:3;9437:67;;;9430:74;;9537:33;9533:1;9528:3;9524:11;9517:54;9599:2;9594:3;9590:12;9583:19;;9423:185;;;;9616:113;9699:24;9717:5;9699:24;;;9694:3;9687:37;9681:48;;;9736:890;;10064:93;10153:3;10144:6;10064:93;;;10057:100;;10175:93;10264:3;10255:6;10175:93;;;10168:100;;10286:93;10375:3;10366:6;10286:93;;;10279:100;;10397:93;10486:3;10477:6;10397:93;;;10390:100;;10508:93;10597:3;10588:6;10508:93;;;10501:100;;10618:3;10611:10;;10045:581;;;;;;;;;10633:370;;10831:147;10974:3;10831:147;;;10824:154;;10995:3;10988:10;;10812:191;;;;11010:213;;11128:2;11117:9;11113:18;11105:26;;11142:71;11210:1;11199:9;11195:17;11186:6;11142:71;;;11099:124;;;;;11230:340;;11384:2;11373:9;11369:18;11361:26;;11398:79;11474:1;11463:9;11459:17;11450:6;11398:79;;;11488:72;11556:2;11545:9;11541:18;11532:6;11488:72;;;11355:215;;;;;;11577:431;;11749:2;11738:9;11734:18;11726:26;;11763:71;11831:1;11820:9;11816:17;11807:6;11763:71;;;11845:72;11913:2;11902:9;11898:18;11889:6;11845:72;;;11928:70;11994:2;11983:9;11979:18;11970:6;11928:70;;;11720:288;;;;;;;12015:408;;12179:2;12168:9;12164:18;12156:26;;12193:71;12261:1;12250:9;12246:17;12237:6;12193:71;;;12312:9;12306:4;12302:20;12297:2;12286:9;12282:18;12275:48;12337:76;12408:4;12399:6;12337:76;;;12329:84;;12150:273;;;;;;12430:201;;12542:2;12531:9;12527:18;12519:26;;12556:65;12618:1;12607:9;12603:17;12594:6;12556:65;;;12513:118;;;;;12638:297;;12774:2;12763:9;12759:18;12751:26;;12824:9;12818:4;12814:20;12810:1;12799:9;12795:17;12788:47;12849:76;12920:4;12911:6;12849:76;;;12841:84;;12745:190;;;;;12942:253;;13080:2;13069:9;13065:18;13057:26;;13094:91;13182:1;13171:9;13167:17;13158:6;13094:91;;;13051:144;;;;;13202:255;;13341:2;13330:9;13326:18;13318:26;;13355:92;13444:1;13433:9;13429:17;13420:6;13355:92;;;13312:145;;;;;13464:287;;13619:2;13608:9;13604:18;13596:26;;13633:108;13738:1;13727:9;13723:17;13714:6;13633:108;;;13590:161;;;;;13758:301;;13896:2;13885:9;13881:18;13873:26;;13946:9;13940:4;13936:20;13932:1;13921:9;13917:17;13910:47;13971:78;14044:4;14035:6;13971:78;;;13963:86;;13867:192;;;;;14066:407;;14257:2;14246:9;14242:18;14234:26;;14307:9;14301:4;14297:20;14293:1;14282:9;14278:17;14271:47;14332:131;14458:4;14332:131;;;14324:139;;14228:245;;;;14480:407;;14671:2;14660:9;14656:18;14648:26;;14721:9;14715:4;14711:20;14707:1;14696:9;14692:17;14685:47;14746:131;14872:4;14746:131;;;14738:139;;14642:245;;;;14894:407;;15085:2;15074:9;15070:18;15062:26;;15135:9;15129:4;15125:20;15121:1;15110:9;15106:17;15099:47;15160:131;15286:4;15160:131;;;15152:139;;15056:245;;;;15308:407;;15499:2;15488:9;15484:18;15476:26;;15549:9;15543:4;15539:20;15535:1;15524:9;15520:17;15513:47;15574:131;15700:4;15574:131;;;15566:139;;15470:245;;;;15722:407;;15913:2;15902:9;15898:18;15890:26;;15963:9;15957:4;15953:20;15949:1;15938:9;15934:17;15927:47;15988:131;16114:4;15988:131;;;15980:139;;15884:245;;;;16136:407;;16327:2;16316:9;16312:18;16304:26;;16377:9;16371:4;16367:20;16363:1;16352:9;16348:17;16341:47;16402:131;16528:4;16402:131;;;16394:139;;16298:245;;;;16550:213;;16668:2;16657:9;16653:18;16645:26;;16682:71;16750:1;16739:9;16735:17;16726:6;16682:71;;;16639:124;;;;;16770:428;;16944:2;16933:9;16929:18;16921:26;;16958:71;17026:1;17015:9;17011:17;17002:6;16958:71;;;17077:9;17071:4;17067:20;17062:2;17051:9;17047:18;17040:48;17102:86;17183:4;17174:6;17166;17102:86;;;17094:94;;16915:283;;;;;;;17205:256;;17267:2;17261:9;17251:19;;17305:4;17297:6;17293:17;17404:6;17392:10;17389:22;17368:18;17356:10;17353:34;17350:62;17347:2;;;17425:1;17422;17415:12;17347:2;17445:10;17441:2;17434:22;17245:216;;;;;17468:321;;17611:18;17603:6;17600:30;17597:2;;;17643:1;17640;17633:12;17597:2;17710:4;17706:9;17699:4;17691:6;17687:17;17683:33;17675:41;;17774:4;17768;17764:15;17756:23;;17534:255;;;;17796:121;;17889:5;17883:12;17873:22;;17854:63;;;;17924:122;;18018:5;18012:12;18002:22;;17983:63;;;;18054:162;;18168:6;18163:3;18156:19;18205:4;18200:3;18196:14;18181:29;;18149:67;;;;;18225:144;;18360:3;18345:18;;18338:31;;;;;18378:163;;18493:6;18488:3;18481:19;18530:4;18525:3;18521:14;18506:29;;18474:67;;;;;18549:91;;18611:24;18629:5;18611:24;;;18600:35;;18594:46;;;;18647:99;;18717:24;18735:5;18717:24;;;18706:35;;18700:46;;;;18753:85;;18826:5;18819:13;18812:21;18801:32;;18795:43;;;;18845:144;;18917:66;18910:5;18906:78;18895:89;;18889:100;;;;18996:111;;19078:24;19096:5;19078:24;;;19067:35;;19061:46;;;;19114:121;;19187:42;19180:5;19176:54;19165:65;;19159:76;;;;19242:72;;19304:5;19293:16;;19287:27;;;;19321:129;;19408:37;19439:5;19408:37;;;19395:50;;19389:61;;;;19457:161;;19556:57;19607:5;19556:57;;;19543:70;;19537:81;;;;19625:128;;19724:24;19742:5;19724:24;;;19711:37;;19705:48;;;;19760:163;;19860:58;19912:5;19860:58;;;19847:71;;19841:82;;;;19930:129;;20030:24;20048:5;20030:24;;;20017:37;;20011:48;;;;20066:195;;20182:74;20250:5;20182:74;;;20169:87;;20163:98;;;;20268:145;;20384:24;20402:5;20384:24;;;20371:37;;20365:48;;;;20420:121;;20499:37;20530:5;20499:37;;;20486:50;;20480:61;;;;20548:108;;20627:24;20645:5;20627:24;;;20614:37;;20608:48;;;;20664:145;20745:6;20740:3;20735;20722:30;20801:1;20792:6;20787:3;20783:16;20776:27;20715:94;;;;20818:268;20883:1;20890:101;20904:6;20901:1;20898:13;20890:101;;;20980:1;20975:3;20971:11;20965:18;20961:1;20956:3;20952:11;20945:39;20926:2;20923:1;20919:10;20914:15;;20890:101;;;21006:6;21003:1;21000:13;20997:2;;;21071:1;21062:6;21057:3;21053:16;21046:27;20997:2;20867:219;;;;;21094:97;;21182:2;21178:7;21173:2;21166:5;21162:14;21158:28;21148:38;;21142:49;;;;21199:117;21268:24;21286:5;21268:24;;;21261:5;21258:35;21248:2;;21307:1;21304;21297:12;21248:2;21242:74;;21323:133;21400:32;21426:5;21400:32;;;21393:5;21390:43;21380:2;;21447:1;21444;21437:12;21380:2;21374:82;;21463:111;21529:21;21544:5;21529:21;;;21522:5;21519:32;21509:2;;21565:1;21562;21555:12;21509:2;21503:71;;21581:157;21670:44;21708:5;21670:44;;;21663:5;21660:55;21650:2;;21729:1;21726;21719:12;21650:2;21644:94;;21745:117;21814:24;21832:5;21814:24;;;21807:5;21804:35;21794:2;;21853:1;21850;21843:12;21794:2;21788:74;", + "source": "/*\n Main contract to handle Aave flashloans on Compound Finance.\n (D)edge's (A)ave (C)ommon Proxy.\n*/\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\nimport \"../lib/BytesLib.sol\";\nimport \"../lib/aave/FlashLoanReceiverBase.sol\";\nimport \"../lib/dapphub/Proxy.sol\";\n\nimport \"../interfaces/IERC20.sol\";\n\ncontract DACProxy is\n DSProxy(address(1)),\n FlashLoanReceiverBase,\n BytesLibLite\n{\n // TODO: Change this value\n address payable constant protocolFeePayoutAddress1 = 0x773CCbFB422850617A5680D40B1260422d072f41;\n address payable constant protocolFeePayoutAddress2 = 0xAbcCB8f0a3c206Bb0468C52CCc20f3b81077417B;\n\n constructor(address _cacheAddr) public {\n setCache(_cacheAddr);\n }\n\n function() external payable {}\n\n // This is for Aave flashloans\n function executeOperation(\n address _reserve,\n uint256 _amount,\n uint256 _fee,\n bytes calldata _params\n ) external\n auth\n {\n // Assumes that once the action(s) are performed\n // we will have totalDebt would of _reserve to repay\n // aave and the protocol\n uint protocolFee = _fee.div(2);\n\n // Re-encodes new data \n // Function signature should conform to:\n /* (\n // Note: for address, as abiEncoder pads it to 32 bytes our starting position is 12\n // due to addresses having 20 bytes in length\n address - Address to call | start: 12; (20 bytes)\n bytes - Function sig | start: 32; (4 bytes)\n uint - Data of _amount | start: 36; (32 bytes)\n uint - Data of _aaveFee | start: 68; (32 bytes)\n uint - Data of _protocolFee | start: 100; (32 bytes)\n bytes - Data of _data | start: 132; (dynamic length)\n )\n\n i.e.\n\n function myFunction(\n uint amount,\n uint aaveFee,\n uint protocolFee,\n bytes memory _data\n ) { ... }\n */\n address targetAddress = bytesToAddress(_params, 12);\n bytes memory fSig = slice(_params, 32, 4);\n bytes memory data = sliceToEnd(_params, 132);\n\n // Re-encodes function signature and injects new\n // _amount, _fee, and _protocolFee into _data\n bytes memory newData = abi.encodePacked(\n fSig,\n abi.encode(_amount),\n abi.encode(_fee),\n abi.encode(protocolFee),\n data\n );\n\n // Executes new target\n execute(targetAddress, newData);\n\n // Repays protocol fee\n if (_reserve == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {\n protocolFeePayoutAddress1.call.value(protocolFee.div(2))(\"\");\n protocolFeePayoutAddress2.call.value(protocolFee.div(2))(\"\");\n } else {\n IERC20(_reserve).transfer(protocolFeePayoutAddress1, protocolFee.div(2));\n IERC20(_reserve).transfer(protocolFeePayoutAddress2, protocolFee.div(2));\n }\n\n // Repays aave\n transferFundsBackToPoolInternal(_reserve, _amount.add(_fee));\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", "ast": { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", "exportedSymbols": { "DACProxy": [ - 7322 + 7244 ] }, - "id": 7323, + "id": 7245, "nodeType": "SourceUnit", "nodes": [ { - "id": 7190, + "id": 7079, "literals": [ "solidity", "0.5", @@ -314,7 +314,7 @@ "src": "109:23:29" }, { - "id": 7191, + "id": 7080, "literals": [ "experimental", "ABIEncoderV2" @@ -325,9 +325,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol", "file": "../lib/BytesLib.sol", - "id": 7192, + "id": 7081, "nodeType": "ImportDirective", - "scope": 7323, + "scope": 7245, "sourceUnit": 2036, "src": "168:29:29", "symbolAliases": [], @@ -336,9 +336,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol", "file": "../lib/aave/FlashLoanReceiverBase.sol", - "id": 7193, + "id": 7082, "nodeType": "ImportDirective", - "scope": 7323, + "scope": 7245, "sourceUnit": 2139, "src": "198:47:29", "symbolAliases": [], @@ -347,9 +347,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol", "file": "../lib/dapphub/Proxy.sol", - "id": 7194, + "id": 7083, "nodeType": "ImportDirective", - "scope": 7323, + "scope": 7245, "sourceUnit": 3789, "src": "246:34:29", "symbolAliases": [], @@ -358,9 +358,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol", "file": "../interfaces/IERC20.sol", - "id": 7195, + "id": 7084, "nodeType": "ImportDirective", - "scope": 7323, + "scope": 7245, "sourceUnit": 121, "src": "282:34:29", "symbolAliases": [], @@ -376,7 +376,7 @@ { "argumentTypes": null, "hexValue": "31", - "id": 7198, + "id": 7087, "isConstant": false, "isLValue": false, "isPure": true, @@ -399,7 +399,7 @@ "typeString": "int_const 1" } ], - "id": 7197, + "id": 7086, "isConstant": false, "isLValue": false, "isPure": true, @@ -412,7 +412,7 @@ }, "typeName": "address" }, - "id": 7199, + "id": 7088, "isConstant": false, "isLValue": false, "isPure": true, @@ -429,7 +429,7 @@ ], "baseName": { "contractScope": null, - "id": 7196, + "id": 7085, "name": "DSProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3660, @@ -439,7 +439,7 @@ "typeString": "contract DSProxy" } }, - "id": 7200, + "id": 7089, "nodeType": "InheritanceSpecifier", "src": "343:19:29" }, @@ -447,7 +447,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 7201, + "id": 7090, "name": "FlashLoanReceiverBase", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2138, @@ -457,7 +457,7 @@ "typeString": "contract FlashLoanReceiverBase" } }, - "id": 7202, + "id": 7091, "nodeType": "InheritanceSpecifier", "src": "368:21:29" }, @@ -465,7 +465,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 7203, + "id": 7092, "name": "BytesLibLite", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2035, @@ -475,7 +475,7 @@ "typeString": "contract BytesLibLite" } }, - "id": 7204, + "id": 7093, "nodeType": "InheritanceSpecifier", "src": "395:12:29" } @@ -492,9 +492,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 7322, + "id": 7244, "linearizedBaseContracts": [ - 7322, + 7244, 2035, 2138, 354, @@ -508,11 +508,11 @@ "nodes": [ { "constant": true, - "id": 7207, - "name": "protocolFeePayoutAddress", + "id": 7096, + "name": "protocolFeePayoutAddress1", "nodeType": "VariableDeclaration", - "scope": 7322, - "src": "445:94:29", + "scope": 7244, + "src": "445:95:29", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -520,7 +520,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7205, + "id": 7094, "name": "address", "nodeType": "ElementaryTypeName", "src": "445:15:29", @@ -532,29 +532,73 @@ }, "value": { "argumentTypes": null, - "hexValue": "307835364435653031443544324638353361413866346163356432466642346342424361396532623066", - "id": 7206, + "hexValue": "307837373343436246423432323835303631374135363830443430423132363034323264303732663431", + "id": 7095, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "497:42:29", + "src": "498:42:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, - "value": "0x56D5e01D5D2F853aA8f4ac5d2FfB4cBBCa9e2b0f" + "value": "0x773CCbFB422850617A5680D40B1260422d072f41" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 7099, + "name": "protocolFeePayoutAddress2", + "nodeType": "VariableDeclaration", + "scope": 7244, + "src": "546:95:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7097, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "546:15:29", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307841626343423866306133633230364262303436384335324343633230663362383130373734313742", + "id": 7098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "599:42:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0xAbcCB8f0a3c206Bb0468C52CCc20f3b81077417B" }, "visibility": "internal" }, { "body": { - "id": 7216, + "id": 7108, "nodeType": "Block", - "src": "585:37:29", + "src": "687:37:29", "statements": [ { "expression": { @@ -562,12 +606,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7213, + "id": 7105, "name": "_cacheAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7209, - "src": "604:10:29", + "referencedDeclaration": 7101, + "src": "706:10:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -581,18 +625,18 @@ "typeString": "address" } ], - "id": 7212, + "id": 7104, "name": "setCache", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3659, - "src": "595:8:29", + "src": "697:8:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) returns (bool)" } }, - "id": 7214, + "id": 7106, "isConstant": false, "isLValue": false, "isPure": false, @@ -600,36 +644,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "595:20:29", + "src": "697:20:29", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 7215, + "id": 7107, "nodeType": "ExpressionStatement", - "src": "595:20:29" + "src": "697:20:29" } ] }, "documentation": null, - "id": 7217, + "id": 7109, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 7210, + "id": 7102, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7209, + "id": 7101, "name": "_cacheAddr", "nodeType": "VariableDeclaration", - "scope": 7217, - "src": "558:18:29", + "scope": 7109, + "src": "660:18:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -637,10 +681,10 @@ "typeString": "address" }, "typeName": { - "id": 7208, + "id": 7100, "name": "address", "nodeType": "ElementaryTypeName", - "src": "558:7:29", + "src": "660:7:29", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -651,70 +695,70 @@ "visibility": "internal" } ], - "src": "557:20:29" + "src": "659:20:29" }, "returnParameters": { - "id": 7211, + "id": 7103, "nodeType": "ParameterList", "parameters": [], - "src": "585:0:29" + "src": "687:0:29" }, - "scope": 7322, - "src": "546:76:29", + "scope": 7244, + "src": "648:76:29", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 7220, + "id": 7112, "nodeType": "Block", - "src": "656:2:29", + "src": "758:2:29", "statements": [] }, "documentation": null, - "id": 7221, + "id": 7113, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 7218, + "id": 7110, "nodeType": "ParameterList", "parameters": [], - "src": "636:2:29" + "src": "738:2:29" }, "returnParameters": { - "id": 7219, + "id": 7111, "nodeType": "ParameterList", "parameters": [], - "src": "656:0:29" + "src": "758:0:29" }, - "scope": 7322, - "src": "628:30:29", + "scope": 7244, + "src": "730:30:29", "stateMutability": "payable", "superFunction": 2058, "visibility": "external" }, { "body": { - "id": 7320, + "id": 7242, "nodeType": "Block", - "src": "862:2076:29", + "src": "964:2252:29", "statements": [ { "assignments": [ - 7235 + 7127 ], "declarations": [ { "constant": false, - "id": 7235, + "id": 7127, "name": "protocolFee", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "1023:16:29", + "scope": 7242, + "src": "1125:16:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -722,10 +766,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7234, + "id": 7126, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1023:4:29", + "src": "1125:4:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -735,21 +779,21 @@ "visibility": "internal" } ], - "id": 7240, + "id": 7132, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "32", - "id": 7238, + "id": 7130, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1051:1:29", + "src": "1153:1:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -767,32 +811,32 @@ ], "expression": { "argumentTypes": null, - "id": 7236, + "id": 7128, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7227, - "src": "1042:4:29", + "referencedDeclaration": 7119, + "src": "1144:4:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 7237, + "id": 7129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 7748, - "src": "1042:8:29", + "referencedDeclaration": 7670, + "src": "1144:8:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 7239, + "id": 7131, "isConstant": false, "isLValue": false, "isPure": false, @@ -800,27 +844,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1042:11:29", + "src": "1144:11:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1023:30:29" + "src": "1125:30:29" }, { "assignments": [ - 7242 + 7134 ], "declarations": [ { "constant": false, - "id": 7242, + "id": 7134, "name": "targetAddress", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "2020:21:29", + "scope": 7242, + "src": "2122:21:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -828,10 +872,10 @@ "typeString": "address" }, "typeName": { - "id": 7241, + "id": 7133, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2020:7:29", + "src": "2122:7:29", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -842,18 +886,18 @@ "visibility": "internal" } ], - "id": 7247, + "id": 7139, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7244, + "id": 7136, "name": "_params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7229, - "src": "2059:7:29", + "referencedDeclaration": 7121, + "src": "2161:7:29", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -862,14 +906,14 @@ { "argumentTypes": null, "hexValue": "3132", - "id": 7245, + "id": 7137, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2068:2:29", + "src": "2170:2:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", @@ -889,18 +933,18 @@ "typeString": "int_const 12" } ], - "id": 7243, + "id": 7135, "name": "bytesToAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2034, - "src": "2044:14:29", + "src": "2146:14:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, - "id": 7246, + "id": 7138, "isConstant": false, "isLValue": false, "isPure": false, @@ -908,27 +952,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2044:27:29", + "src": "2146:27:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2020:51:29" + "src": "2122:51:29" }, { "assignments": [ - 7249 + 7141 ], "declarations": [ { "constant": false, - "id": 7249, + "id": 7141, "name": "fSig", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "2081:17:29", + "scope": 7242, + "src": "2183:17:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -936,10 +980,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7248, + "id": 7140, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2081:5:29", + "src": "2183:5:29", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -949,18 +993,18 @@ "visibility": "internal" } ], - "id": 7255, + "id": 7147, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7251, + "id": 7143, "name": "_params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7229, - "src": "2111:7:29", + "referencedDeclaration": 7121, + "src": "2213:7:29", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -969,14 +1013,14 @@ { "argumentTypes": null, "hexValue": "3332", - "id": 7252, + "id": 7144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2120:2:29", + "src": "2222:2:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -987,14 +1031,14 @@ { "argumentTypes": null, "hexValue": "34", - "id": 7253, + "id": 7145, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2124:1:29", + "src": "2226:1:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -1018,18 +1062,18 @@ "typeString": "int_const 4" } ], - "id": 7250, + "id": 7142, "name": "slice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2007, - "src": "2105:5:29", + "src": "2207:5:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, - "id": 7254, + "id": 7146, "isConstant": false, "isLValue": false, "isPure": false, @@ -1037,27 +1081,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2105:21:29", + "src": "2207:21:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2081:45:29" + "src": "2183:45:29" }, { "assignments": [ - 7257 + 7149 ], "declarations": [ { "constant": false, - "id": 7257, + "id": 7149, "name": "data", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "2136:17:29", + "scope": 7242, + "src": "2238:17:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1065,10 +1109,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7256, + "id": 7148, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2136:5:29", + "src": "2238:5:29", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1078,18 +1122,18 @@ "visibility": "internal" } ], - "id": 7262, + "id": 7154, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7259, + "id": 7151, "name": "_params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7229, - "src": "2171:7:29", + "referencedDeclaration": 7121, + "src": "2273:7:29", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -1098,14 +1142,14 @@ { "argumentTypes": null, "hexValue": "313332", - "id": 7260, + "id": 7152, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2180:3:29", + "src": "2282:3:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_132_by_1", @@ -1125,18 +1169,18 @@ "typeString": "int_const 132" } ], - "id": 7258, + "id": 7150, "name": "sliceToEnd", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1978, - "src": "2160:10:29", + "src": "2262:10:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes memory)" } }, - "id": 7261, + "id": 7153, "isConstant": false, "isLValue": false, "isPure": false, @@ -1144,27 +1188,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2160:24:29", + "src": "2262:24:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2136:48:29" + "src": "2238:48:29" }, { "assignments": [ - 7264 + 7156 ], "declarations": [ { "constant": false, - "id": 7264, + "id": 7156, "name": "newData", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "2306:20:29", + "scope": 7242, + "src": "2408:20:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1172,10 +1216,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7263, + "id": 7155, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2306:5:29", + "src": "2408:5:29", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1185,18 +1229,18 @@ "visibility": "internal" } ], - "id": 7282, + "id": 7174, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7267, + "id": 7159, "name": "fSig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7249, - "src": "2359:4:29", + "referencedDeclaration": 7141, + "src": "2461:4:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1207,12 +1251,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7270, + "id": 7162, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7225, - "src": "2388:7:29", + "referencedDeclaration": 7117, + "src": "2490:7:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1228,18 +1272,18 @@ ], "expression": { "argumentTypes": null, - "id": 7268, + "id": 7160, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "2377:3:29", + "referencedDeclaration": 7814, + "src": "2479:3:29", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7269, + "id": 7161, "isConstant": false, "isLValue": false, "isPure": true, @@ -1247,13 +1291,13 @@ "memberName": "encode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2377:10:29", + "src": "2479:10:29", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 7271, + "id": 7163, "isConstant": false, "isLValue": false, "isPure": false, @@ -1261,7 +1305,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2377:19:29", + "src": "2479:19:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1272,12 +1316,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7274, + "id": 7166, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7227, - "src": "2421:4:29", + "referencedDeclaration": 7119, + "src": "2523:4:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1293,18 +1337,18 @@ ], "expression": { "argumentTypes": null, - "id": 7272, + "id": 7164, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "2410:3:29", + "referencedDeclaration": 7814, + "src": "2512:3:29", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7273, + "id": 7165, "isConstant": false, "isLValue": false, "isPure": true, @@ -1312,13 +1356,13 @@ "memberName": "encode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2410:10:29", + "src": "2512:10:29", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 7275, + "id": 7167, "isConstant": false, "isLValue": false, "isPure": false, @@ -1326,7 +1370,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2410:16:29", + "src": "2512:16:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1337,12 +1381,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7278, + "id": 7170, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7235, - "src": "2451:11:29", + "referencedDeclaration": 7127, + "src": "2553:11:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1358,18 +1402,18 @@ ], "expression": { "argumentTypes": null, - "id": 7276, + "id": 7168, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "2440:3:29", + "referencedDeclaration": 7814, + "src": "2542:3:29", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7277, + "id": 7169, "isConstant": false, "isLValue": false, "isPure": true, @@ -1377,13 +1421,13 @@ "memberName": "encode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2440:10:29", + "src": "2542:10:29", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 7279, + "id": 7171, "isConstant": false, "isLValue": false, "isPure": false, @@ -1391,7 +1435,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2440:23:29", + "src": "2542:23:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1399,12 +1443,12 @@ }, { "argumentTypes": null, - "id": 7280, + "id": 7172, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7257, - "src": "2477:4:29", + "referencedDeclaration": 7149, + "src": "2579:4:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1436,18 +1480,18 @@ ], "expression": { "argumentTypes": null, - "id": 7265, + "id": 7157, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "2329:3:29", + "referencedDeclaration": 7814, + "src": "2431:3:29", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7266, + "id": 7158, "isConstant": false, "isLValue": false, "isPure": true, @@ -1455,13 +1499,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2329:16:29", + "src": "2431:16:29", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 7281, + "id": 7173, "isConstant": false, "isLValue": false, "isPure": false, @@ -1469,14 +1513,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2329:162:29", + "src": "2431:162:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2306:185:29" + "src": "2408:185:29" }, { "expression": { @@ -1484,12 +1528,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7284, + "id": 7176, "name": "targetAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7242, - "src": "2541:13:29", + "referencedDeclaration": 7134, + "src": "2643:13:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1497,12 +1541,12 @@ }, { "argumentTypes": null, - "id": 7285, + "id": 7177, "name": "newData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7264, - "src": "2556:7:29", + "referencedDeclaration": 7156, + "src": "2658:7:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1520,7 +1564,7 @@ "typeString": "bytes memory" } ], - "id": 7283, + "id": 7175, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1528,13 +1572,13 @@ 3630 ], "referencedDeclaration": 3630, - "src": "2533:7:29", + "src": "2635:7:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory) returns (bytes memory)" } }, - "id": 7286, + "id": 7178, "isConstant": false, "isLValue": false, "isPure": false, @@ -1542,15 +1586,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2533:31:29", + "src": "2635:31:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 7287, + "id": 7179, "nodeType": "ExpressionStatement", - "src": "2533:31:29" + "src": "2635:31:29" }, { "condition": { @@ -1559,19 +1603,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7290, + "id": 7182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7288, + "id": 7180, "name": "_reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7223, - "src": "2610:8:29", + "referencedDeclaration": 7115, + "src": "2712:8:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1582,14 +1626,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545", - "id": 7289, + "id": 7181, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2622:42:29", + "src": "2724:42:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1597,16 +1641,16 @@ }, "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" }, - "src": "2610:54:29", + "src": "2712:54:29", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 7310, + "id": 7232, "nodeType": "Block", - "src": "2749:89:29", + "src": "2933:183:29", "statements": [ { "expression": { @@ -1614,25 +1658,262 @@ "arguments": [ { "argumentTypes": null, - "id": 7306, - "name": "protocolFeePayoutAddress", + "id": 7214, + "name": "protocolFeePayoutAddress1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7207, - "src": "2789:24:29", + "referencedDeclaration": 7096, + "src": "2973:25:29", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 7217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3016:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "expression": { + "argumentTypes": null, + "id": 7215, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7127, + "src": "3000:11:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 7670, + "src": "3000:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3000:18:29", "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { "typeIdentifier": "t_address_payable", "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7211, + "name": "_reserve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7115, + "src": "2954:8:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7210, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2947:6:29", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 7212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2947:16:29", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$120", + "typeString": "contract IERC20" } }, + "id": 7213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 59, + "src": "2947:25:29", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 7219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2947:72:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7220, + "nodeType": "ExpressionStatement", + "src": "2947:72:29" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { "argumentTypes": null, - "id": 7307, - "name": "protocolFee", + "id": 7225, + "name": "protocolFeePayoutAddress2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7235, - "src": "2815:11:29", + "referencedDeclaration": 7099, + "src": "3059:25:29", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 7228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3102:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "expression": { + "argumentTypes": null, + "id": 7226, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7127, + "src": "3086:11:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 7670, + "src": "3086:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3086:18:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1655,12 +1936,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7303, + "id": 7222, "name": "_reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7223, - "src": "2770:8:29", + "referencedDeclaration": 7115, + "src": "3040:8:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1674,18 +1955,18 @@ "typeString": "address" } ], - "id": 7302, + "id": 7221, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, - "src": "2763:6:29", + "src": "3033:6:29", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", "typeString": "type(contract IERC20)" } }, - "id": 7304, + "id": 7223, "isConstant": false, "isLValue": false, "isPure": false, @@ -1693,13 +1974,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:16:29", + "src": "3033:16:29", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$120", "typeString": "contract IERC20" } }, - "id": 7305, + "id": 7224, "isConstant": false, "isLValue": false, "isPure": false, @@ -1707,13 +1988,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 59, - "src": "2763:25:29", + "src": "3033:25:29", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 7308, + "id": 7230, "isConstant": false, "isLValue": false, "isPure": false, @@ -1721,25 +2002,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:64:29", + "src": "3033:72:29", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 7309, + "id": 7231, "nodeType": "ExpressionStatement", - "src": "2763:64:29" + "src": "3033:72:29" } ] }, - "id": 7311, + "id": 7233, "nodeType": "IfStatement", - "src": "2606:232:29", + "src": "2708:408:29", "trueBody": { - "id": 7301, + "id": 7209, "nodeType": "Block", - "src": "2666:77:29", + "src": "2768:159:29", "statements": [ { "expression": { @@ -1748,14 +2029,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 7298, + "id": 7193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2729:2:29", + "src": "2839:2:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -1774,12 +2055,69 @@ "arguments": [ { "argumentTypes": null, - "id": 7296, - "name": "protocolFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7235, - "src": "2716:11:29", + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 7190, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2835:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "expression": { + "argumentTypes": null, + "id": 7188, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7127, + "src": "2819:11:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 7670, + "src": "2819:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2819:18:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1797,18 +2135,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7291, - "name": "protocolFeePayoutAddress", + "id": 7183, + "name": "protocolFeePayoutAddress1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7207, - "src": "2680:24:29", + "referencedDeclaration": 7096, + "src": "2782:25:29", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 7294, + "id": 7186, "isConstant": false, "isLValue": false, "isPure": false, @@ -1816,13 +2154,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2680:29:29", + "src": "2782:30:29", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 7295, + "id": 7187, "isConstant": false, "isLValue": false, "isPure": false, @@ -1830,13 +2168,13 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2680:35:29", + "src": "2782:36:29", "typeDescriptions": { "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 7297, + "id": 7192, "isConstant": false, "isLValue": false, "isPure": false, @@ -1844,13 +2182,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2680:48:29", + "src": "2782:56:29", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 7299, + "id": 7194, "isConstant": false, "isLValue": false, "isPure": false, @@ -1858,88 +2196,272 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2680:52:29", + "src": "2782:60:29", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, - "id": 7300, + "id": 7195, "nodeType": "ExpressionStatement", - "src": "2680:52:29" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7313, - "name": "_reserve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7223, - "src": "2903:8:29", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "src": "2782:60:29" }, { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7316, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7227, - "src": "2925:4:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], "expression": { - "argumentTypes": [ + "argumentTypes": null, + "arguments": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 7314, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7225, - "src": "2913:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7315, + "argumentTypes": null, + "hexValue": "", + "id": 7206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2913:2:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 7203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2909:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "expression": { + "argumentTypes": null, + "id": 7201, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7127, + "src": "2893:11:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 7670, + "src": "2893:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2893:18:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7196, + "name": "protocolFeePayoutAddress2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7099, + "src": "2856:25:29", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 7199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2856:30:29", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 7200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2856:36:29", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", + "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" + } + }, + "id": 7205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2856:56:29", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 7207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2856:60:29", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "id": 7208, + "nodeType": "ExpressionStatement", + "src": "2856:60:29" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7235, + "name": "_reserve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7115, + "src": "3181:8:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7238, + "name": "_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7119, + "src": "3203:4:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 7236, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7117, + "src": "3191:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 7655, - "src": "2913:11:29", + "referencedDeclaration": 7577, + "src": "3191:11:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 7317, + "id": 7239, "isConstant": false, "isLValue": false, "isPure": false, @@ -1947,7 +2469,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2913:17:29", + "src": "3191:17:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1965,18 +2487,18 @@ "typeString": "uint256" } ], - "id": 7312, + "id": 7234, "name": "transferFundsBackToPoolInternal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2078, - "src": "2871:31:29", + "src": "3149:31:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 7318, + "id": 7240, "isConstant": false, "isLValue": false, "isPure": false, @@ -1984,56 +2506,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2871:60:29", + "src": "3149:60:29", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7319, + "id": 7241, "nodeType": "ExpressionStatement", - "src": "2871:60:29" + "src": "3149:60:29" } ] }, "documentation": null, - "id": 7321, + "id": 7243, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 7232, + "id": 7124, "modifierName": { "argumentTypes": null, - "id": 7231, + "id": 7123, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2876, - "src": "853:4:29", + "src": "955:4:29", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "853:4:29" + "src": "955:4:29" } ], "name": "executeOperation", "nodeType": "FunctionDefinition", "parameters": { - "id": 7230, + "id": 7122, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7223, + "id": 7115, "name": "_reserve", "nodeType": "VariableDeclaration", - "scope": 7321, - "src": "734:16:29", + "scope": 7243, + "src": "836:16:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2041,10 +2563,10 @@ "typeString": "address" }, "typeName": { - "id": 7222, + "id": 7114, "name": "address", "nodeType": "ElementaryTypeName", - "src": "734:7:29", + "src": "836:7:29", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2056,11 +2578,11 @@ }, { "constant": false, - "id": 7225, + "id": 7117, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 7321, - "src": "760:15:29", + "scope": 7243, + "src": "862:15:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2068,10 +2590,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7224, + "id": 7116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "760:7:29", + "src": "862:7:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2082,11 +2604,11 @@ }, { "constant": false, - "id": 7227, + "id": 7119, "name": "_fee", "nodeType": "VariableDeclaration", - "scope": 7321, - "src": "785:12:29", + "scope": 7243, + "src": "887:12:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2094,10 +2616,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7226, + "id": 7118, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "785:7:29", + "src": "887:7:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2108,11 +2630,11 @@ }, { "constant": false, - "id": 7229, + "id": 7121, "name": "_params", "nodeType": "VariableDeclaration", - "scope": 7321, - "src": "807:22:29", + "scope": 7243, + "src": "909:22:29", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -2120,10 +2642,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7228, + "id": 7120, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "807:5:29", + "src": "909:5:29", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2133,39 +2655,39 @@ "visibility": "internal" } ], - "src": "724:111:29" + "src": "826:111:29" }, "returnParameters": { - "id": 7233, + "id": 7125, "nodeType": "ParameterList", "parameters": [], - "src": "862:0:29" + "src": "964:0:29" }, - "scope": 7322, - "src": "699:2239:29", + "scope": 7244, + "src": "801:2415:29", "stateMutability": "nonpayable", "superFunction": 353, "visibility": "external" } ], - "scope": 7323, - "src": "318:2622:29" + "scope": 7245, + "src": "318:2900:29" } ], - "src": "109:2831:29" + "src": "109:3109:29" }, "legacyAST": { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", "exportedSymbols": { "DACProxy": [ - 7322 + 7244 ] }, - "id": 7323, + "id": 7245, "nodeType": "SourceUnit", "nodes": [ { - "id": 7190, + "id": 7079, "literals": [ "solidity", "0.5", @@ -2175,7 +2697,7 @@ "src": "109:23:29" }, { - "id": 7191, + "id": 7080, "literals": [ "experimental", "ABIEncoderV2" @@ -2186,9 +2708,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol", "file": "../lib/BytesLib.sol", - "id": 7192, + "id": 7081, "nodeType": "ImportDirective", - "scope": 7323, + "scope": 7245, "sourceUnit": 2036, "src": "168:29:29", "symbolAliases": [], @@ -2197,9 +2719,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol", "file": "../lib/aave/FlashLoanReceiverBase.sol", - "id": 7193, + "id": 7082, "nodeType": "ImportDirective", - "scope": 7323, + "scope": 7245, "sourceUnit": 2139, "src": "198:47:29", "symbolAliases": [], @@ -2208,9 +2730,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol", "file": "../lib/dapphub/Proxy.sol", - "id": 7194, + "id": 7083, "nodeType": "ImportDirective", - "scope": 7323, + "scope": 7245, "sourceUnit": 3789, "src": "246:34:29", "symbolAliases": [], @@ -2219,9 +2741,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol", "file": "../interfaces/IERC20.sol", - "id": 7195, + "id": 7084, "nodeType": "ImportDirective", - "scope": 7323, + "scope": 7245, "sourceUnit": 121, "src": "282:34:29", "symbolAliases": [], @@ -2237,7 +2759,7 @@ { "argumentTypes": null, "hexValue": "31", - "id": 7198, + "id": 7087, "isConstant": false, "isLValue": false, "isPure": true, @@ -2260,7 +2782,7 @@ "typeString": "int_const 1" } ], - "id": 7197, + "id": 7086, "isConstant": false, "isLValue": false, "isPure": true, @@ -2273,7 +2795,7 @@ }, "typeName": "address" }, - "id": 7199, + "id": 7088, "isConstant": false, "isLValue": false, "isPure": true, @@ -2290,7 +2812,7 @@ ], "baseName": { "contractScope": null, - "id": 7196, + "id": 7085, "name": "DSProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3660, @@ -2300,7 +2822,7 @@ "typeString": "contract DSProxy" } }, - "id": 7200, + "id": 7089, "nodeType": "InheritanceSpecifier", "src": "343:19:29" }, @@ -2308,7 +2830,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 7201, + "id": 7090, "name": "FlashLoanReceiverBase", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2138, @@ -2318,7 +2840,7 @@ "typeString": "contract FlashLoanReceiverBase" } }, - "id": 7202, + "id": 7091, "nodeType": "InheritanceSpecifier", "src": "368:21:29" }, @@ -2326,7 +2848,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 7203, + "id": 7092, "name": "BytesLibLite", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2035, @@ -2336,7 +2858,7 @@ "typeString": "contract BytesLibLite" } }, - "id": 7204, + "id": 7093, "nodeType": "InheritanceSpecifier", "src": "395:12:29" } @@ -2353,9 +2875,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 7322, + "id": 7244, "linearizedBaseContracts": [ - 7322, + 7244, 2035, 2138, 354, @@ -2369,11 +2891,11 @@ "nodes": [ { "constant": true, - "id": 7207, - "name": "protocolFeePayoutAddress", + "id": 7096, + "name": "protocolFeePayoutAddress1", "nodeType": "VariableDeclaration", - "scope": 7322, - "src": "445:94:29", + "scope": 7244, + "src": "445:95:29", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2381,7 +2903,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7205, + "id": 7094, "name": "address", "nodeType": "ElementaryTypeName", "src": "445:15:29", @@ -2393,29 +2915,73 @@ }, "value": { "argumentTypes": null, - "hexValue": "307835364435653031443544324638353361413866346163356432466642346342424361396532623066", - "id": 7206, + "hexValue": "307837373343436246423432323835303631374135363830443430423132363034323264303732663431", + "id": 7095, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "497:42:29", + "src": "498:42:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, - "value": "0x56D5e01D5D2F853aA8f4ac5d2FfB4cBBCa9e2b0f" + "value": "0x773CCbFB422850617A5680D40B1260422d072f41" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 7099, + "name": "protocolFeePayoutAddress2", + "nodeType": "VariableDeclaration", + "scope": 7244, + "src": "546:95:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7097, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "546:15:29", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307841626343423866306133633230364262303436384335324343633230663362383130373734313742", + "id": 7098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "599:42:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0xAbcCB8f0a3c206Bb0468C52CCc20f3b81077417B" }, "visibility": "internal" }, { "body": { - "id": 7216, + "id": 7108, "nodeType": "Block", - "src": "585:37:29", + "src": "687:37:29", "statements": [ { "expression": { @@ -2423,12 +2989,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7213, + "id": 7105, "name": "_cacheAddr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7209, - "src": "604:10:29", + "referencedDeclaration": 7101, + "src": "706:10:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2442,18 +3008,18 @@ "typeString": "address" } ], - "id": 7212, + "id": 7104, "name": "setCache", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3659, - "src": "595:8:29", + "src": "697:8:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_bool_$", "typeString": "function (address) returns (bool)" } }, - "id": 7214, + "id": 7106, "isConstant": false, "isLValue": false, "isPure": false, @@ -2461,36 +3027,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "595:20:29", + "src": "697:20:29", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 7215, + "id": 7107, "nodeType": "ExpressionStatement", - "src": "595:20:29" + "src": "697:20:29" } ] }, "documentation": null, - "id": 7217, + "id": 7109, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 7210, + "id": 7102, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7209, + "id": 7101, "name": "_cacheAddr", "nodeType": "VariableDeclaration", - "scope": 7217, - "src": "558:18:29", + "scope": 7109, + "src": "660:18:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2498,10 +3064,10 @@ "typeString": "address" }, "typeName": { - "id": 7208, + "id": 7100, "name": "address", "nodeType": "ElementaryTypeName", - "src": "558:7:29", + "src": "660:7:29", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2512,70 +3078,70 @@ "visibility": "internal" } ], - "src": "557:20:29" + "src": "659:20:29" }, "returnParameters": { - "id": 7211, + "id": 7103, "nodeType": "ParameterList", "parameters": [], - "src": "585:0:29" + "src": "687:0:29" }, - "scope": 7322, - "src": "546:76:29", + "scope": 7244, + "src": "648:76:29", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 7220, + "id": 7112, "nodeType": "Block", - "src": "656:2:29", + "src": "758:2:29", "statements": [] }, "documentation": null, - "id": 7221, + "id": 7113, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 7218, + "id": 7110, "nodeType": "ParameterList", "parameters": [], - "src": "636:2:29" + "src": "738:2:29" }, "returnParameters": { - "id": 7219, + "id": 7111, "nodeType": "ParameterList", "parameters": [], - "src": "656:0:29" + "src": "758:0:29" }, - "scope": 7322, - "src": "628:30:29", + "scope": 7244, + "src": "730:30:29", "stateMutability": "payable", "superFunction": 2058, "visibility": "external" }, { "body": { - "id": 7320, + "id": 7242, "nodeType": "Block", - "src": "862:2076:29", + "src": "964:2252:29", "statements": [ { "assignments": [ - 7235 + 7127 ], "declarations": [ { "constant": false, - "id": 7235, + "id": 7127, "name": "protocolFee", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "1023:16:29", + "scope": 7242, + "src": "1125:16:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2583,10 +3149,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7234, + "id": 7126, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1023:4:29", + "src": "1125:4:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2596,21 +3162,21 @@ "visibility": "internal" } ], - "id": 7240, + "id": 7132, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "32", - "id": 7238, + "id": 7130, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1051:1:29", + "src": "1153:1:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -2628,32 +3194,32 @@ ], "expression": { "argumentTypes": null, - "id": 7236, + "id": 7128, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7227, - "src": "1042:4:29", + "referencedDeclaration": 7119, + "src": "1144:4:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 7237, + "id": 7129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 7748, - "src": "1042:8:29", + "referencedDeclaration": 7670, + "src": "1144:8:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 7239, + "id": 7131, "isConstant": false, "isLValue": false, "isPure": false, @@ -2661,27 +3227,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1042:11:29", + "src": "1144:11:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1023:30:29" + "src": "1125:30:29" }, { "assignments": [ - 7242 + 7134 ], "declarations": [ { "constant": false, - "id": 7242, + "id": 7134, "name": "targetAddress", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "2020:21:29", + "scope": 7242, + "src": "2122:21:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2689,10 +3255,10 @@ "typeString": "address" }, "typeName": { - "id": 7241, + "id": 7133, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2020:7:29", + "src": "2122:7:29", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2703,18 +3269,18 @@ "visibility": "internal" } ], - "id": 7247, + "id": 7139, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7244, + "id": 7136, "name": "_params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7229, - "src": "2059:7:29", + "referencedDeclaration": 7121, + "src": "2161:7:29", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -2723,14 +3289,14 @@ { "argumentTypes": null, "hexValue": "3132", - "id": 7245, + "id": 7137, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2068:2:29", + "src": "2170:2:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", @@ -2750,18 +3316,18 @@ "typeString": "int_const 12" } ], - "id": 7243, + "id": 7135, "name": "bytesToAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2034, - "src": "2044:14:29", + "src": "2146:14:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, - "id": 7246, + "id": 7138, "isConstant": false, "isLValue": false, "isPure": false, @@ -2769,27 +3335,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2044:27:29", + "src": "2146:27:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2020:51:29" + "src": "2122:51:29" }, { "assignments": [ - 7249 + 7141 ], "declarations": [ { "constant": false, - "id": 7249, + "id": 7141, "name": "fSig", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "2081:17:29", + "scope": 7242, + "src": "2183:17:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2797,10 +3363,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7248, + "id": 7140, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2081:5:29", + "src": "2183:5:29", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2810,18 +3376,18 @@ "visibility": "internal" } ], - "id": 7255, + "id": 7147, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7251, + "id": 7143, "name": "_params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7229, - "src": "2111:7:29", + "referencedDeclaration": 7121, + "src": "2213:7:29", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -2830,14 +3396,14 @@ { "argumentTypes": null, "hexValue": "3332", - "id": 7252, + "id": 7144, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2120:2:29", + "src": "2222:2:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -2848,14 +3414,14 @@ { "argumentTypes": null, "hexValue": "34", - "id": 7253, + "id": 7145, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2124:1:29", + "src": "2226:1:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", @@ -2879,18 +3445,18 @@ "typeString": "int_const 4" } ], - "id": 7250, + "id": 7142, "name": "slice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2007, - "src": "2105:5:29", + "src": "2207:5:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, - "id": 7254, + "id": 7146, "isConstant": false, "isLValue": false, "isPure": false, @@ -2898,27 +3464,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2105:21:29", + "src": "2207:21:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2081:45:29" + "src": "2183:45:29" }, { "assignments": [ - 7257 + 7149 ], "declarations": [ { "constant": false, - "id": 7257, + "id": 7149, "name": "data", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "2136:17:29", + "scope": 7242, + "src": "2238:17:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2926,10 +3492,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7256, + "id": 7148, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2136:5:29", + "src": "2238:5:29", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2939,18 +3505,18 @@ "visibility": "internal" } ], - "id": 7262, + "id": 7154, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7259, + "id": 7151, "name": "_params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7229, - "src": "2171:7:29", + "referencedDeclaration": 7121, + "src": "2273:7:29", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -2959,14 +3525,14 @@ { "argumentTypes": null, "hexValue": "313332", - "id": 7260, + "id": 7152, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2180:3:29", + "src": "2282:3:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_132_by_1", @@ -2986,18 +3552,18 @@ "typeString": "int_const 132" } ], - "id": 7258, + "id": 7150, "name": "sliceToEnd", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1978, - "src": "2160:10:29", + "src": "2262:10:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes memory)" } }, - "id": 7261, + "id": 7153, "isConstant": false, "isLValue": false, "isPure": false, @@ -3005,27 +3571,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2160:24:29", + "src": "2262:24:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2136:48:29" + "src": "2238:48:29" }, { "assignments": [ - 7264 + 7156 ], "declarations": [ { "constant": false, - "id": 7264, + "id": 7156, "name": "newData", "nodeType": "VariableDeclaration", - "scope": 7320, - "src": "2306:20:29", + "scope": 7242, + "src": "2408:20:29", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3033,10 +3599,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7263, + "id": 7155, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2306:5:29", + "src": "2408:5:29", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3046,18 +3612,18 @@ "visibility": "internal" } ], - "id": 7282, + "id": 7174, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7267, + "id": 7159, "name": "fSig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7249, - "src": "2359:4:29", + "referencedDeclaration": 7141, + "src": "2461:4:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3068,12 +3634,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7270, + "id": 7162, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7225, - "src": "2388:7:29", + "referencedDeclaration": 7117, + "src": "2490:7:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3089,18 +3655,18 @@ ], "expression": { "argumentTypes": null, - "id": 7268, + "id": 7160, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "2377:3:29", + "referencedDeclaration": 7814, + "src": "2479:3:29", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7269, + "id": 7161, "isConstant": false, "isLValue": false, "isPure": true, @@ -3108,13 +3674,13 @@ "memberName": "encode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2377:10:29", + "src": "2479:10:29", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 7271, + "id": 7163, "isConstant": false, "isLValue": false, "isPure": false, @@ -3122,7 +3688,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2377:19:29", + "src": "2479:19:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3133,12 +3699,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7274, + "id": 7166, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7227, - "src": "2421:4:29", + "referencedDeclaration": 7119, + "src": "2523:4:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3154,18 +3720,18 @@ ], "expression": { "argumentTypes": null, - "id": 7272, + "id": 7164, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "2410:3:29", + "referencedDeclaration": 7814, + "src": "2512:3:29", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7273, + "id": 7165, "isConstant": false, "isLValue": false, "isPure": true, @@ -3173,13 +3739,13 @@ "memberName": "encode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2410:10:29", + "src": "2512:10:29", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 7275, + "id": 7167, "isConstant": false, "isLValue": false, "isPure": false, @@ -3187,7 +3753,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2410:16:29", + "src": "2512:16:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3198,12 +3764,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7278, + "id": 7170, "name": "protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7235, - "src": "2451:11:29", + "referencedDeclaration": 7127, + "src": "2553:11:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3219,18 +3785,18 @@ ], "expression": { "argumentTypes": null, - "id": 7276, + "id": 7168, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "2440:3:29", + "referencedDeclaration": 7814, + "src": "2542:3:29", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7277, + "id": 7169, "isConstant": false, "isLValue": false, "isPure": true, @@ -3238,13 +3804,13 @@ "memberName": "encode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2440:10:29", + "src": "2542:10:29", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 7279, + "id": 7171, "isConstant": false, "isLValue": false, "isPure": false, @@ -3252,7 +3818,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2440:23:29", + "src": "2542:23:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3260,12 +3826,12 @@ }, { "argumentTypes": null, - "id": 7280, + "id": 7172, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7257, - "src": "2477:4:29", + "referencedDeclaration": 7149, + "src": "2579:4:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3297,18 +3863,18 @@ ], "expression": { "argumentTypes": null, - "id": 7265, + "id": 7157, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "2329:3:29", + "referencedDeclaration": 7814, + "src": "2431:3:29", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7266, + "id": 7158, "isConstant": false, "isLValue": false, "isPure": true, @@ -3316,13 +3882,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2329:16:29", + "src": "2431:16:29", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 7281, + "id": 7173, "isConstant": false, "isLValue": false, "isPure": false, @@ -3330,14 +3896,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2329:162:29", + "src": "2431:162:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2306:185:29" + "src": "2408:185:29" }, { "expression": { @@ -3345,12 +3911,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7284, + "id": 7176, "name": "targetAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7242, - "src": "2541:13:29", + "referencedDeclaration": 7134, + "src": "2643:13:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3358,12 +3924,12 @@ }, { "argumentTypes": null, - "id": 7285, + "id": 7177, "name": "newData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7264, - "src": "2556:7:29", + "referencedDeclaration": 7156, + "src": "2658:7:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3381,7 +3947,7 @@ "typeString": "bytes memory" } ], - "id": 7283, + "id": 7175, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -3389,13 +3955,13 @@ 3630 ], "referencedDeclaration": 3630, - "src": "2533:7:29", + "src": "2635:7:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory) returns (bytes memory)" } }, - "id": 7286, + "id": 7178, "isConstant": false, "isLValue": false, "isPure": false, @@ -3403,15 +3969,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2533:31:29", + "src": "2635:31:29", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 7287, + "id": 7179, "nodeType": "ExpressionStatement", - "src": "2533:31:29" + "src": "2635:31:29" }, { "condition": { @@ -3420,19 +3986,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7290, + "id": 7182, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7288, + "id": 7180, "name": "_reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7223, - "src": "2610:8:29", + "referencedDeclaration": 7115, + "src": "2712:8:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3443,14 +4009,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545", - "id": 7289, + "id": 7181, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2622:42:29", + "src": "2724:42:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3458,16 +4024,16 @@ }, "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" }, - "src": "2610:54:29", + "src": "2712:54:29", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 7310, + "id": 7232, "nodeType": "Block", - "src": "2749:89:29", + "src": "2933:183:29", "statements": [ { "expression": { @@ -3475,25 +4041,262 @@ "arguments": [ { "argumentTypes": null, - "id": 7306, - "name": "protocolFeePayoutAddress", + "id": 7214, + "name": "protocolFeePayoutAddress1", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7207, - "src": "2789:24:29", + "referencedDeclaration": 7096, + "src": "2973:25:29", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 7217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3016:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "expression": { + "argumentTypes": null, + "id": 7215, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7127, + "src": "3000:11:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 7670, + "src": "3000:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3000:18:29", "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { "typeIdentifier": "t_address_payable", "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 7211, + "name": "_reserve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7115, + "src": "2954:8:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 7210, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2947:6:29", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 7212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2947:16:29", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$120", + "typeString": "contract IERC20" } }, + "id": 7213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 59, + "src": "2947:25:29", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 7219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2947:72:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7220, + "nodeType": "ExpressionStatement", + "src": "2947:72:29" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { "argumentTypes": null, - "id": 7307, - "name": "protocolFee", + "id": 7225, + "name": "protocolFeePayoutAddress2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7235, - "src": "2815:11:29", + "referencedDeclaration": 7099, + "src": "3059:25:29", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 7228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3102:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "expression": { + "argumentTypes": null, + "id": 7226, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7127, + "src": "3086:11:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 7670, + "src": "3086:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3086:18:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3516,12 +4319,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7303, + "id": 7222, "name": "_reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7223, - "src": "2770:8:29", + "referencedDeclaration": 7115, + "src": "3040:8:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3535,18 +4338,18 @@ "typeString": "address" } ], - "id": 7302, + "id": 7221, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, - "src": "2763:6:29", + "src": "3033:6:29", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", "typeString": "type(contract IERC20)" } }, - "id": 7304, + "id": 7223, "isConstant": false, "isLValue": false, "isPure": false, @@ -3554,13 +4357,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:16:29", + "src": "3033:16:29", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$120", "typeString": "contract IERC20" } }, - "id": 7305, + "id": 7224, "isConstant": false, "isLValue": false, "isPure": false, @@ -3568,13 +4371,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 59, - "src": "2763:25:29", + "src": "3033:25:29", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 7308, + "id": 7230, "isConstant": false, "isLValue": false, "isPure": false, @@ -3582,25 +4385,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:64:29", + "src": "3033:72:29", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 7309, + "id": 7231, "nodeType": "ExpressionStatement", - "src": "2763:64:29" + "src": "3033:72:29" } ] }, - "id": 7311, + "id": 7233, "nodeType": "IfStatement", - "src": "2606:232:29", + "src": "2708:408:29", "trueBody": { - "id": 7301, + "id": 7209, "nodeType": "Block", - "src": "2666:77:29", + "src": "2768:159:29", "statements": [ { "expression": { @@ -3609,14 +4412,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 7298, + "id": 7193, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2729:2:29", + "src": "2839:2:29", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -3635,12 +4438,253 @@ "arguments": [ { "argumentTypes": null, - "id": 7296, - "name": "protocolFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7235, - "src": "2716:11:29", + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 7190, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2835:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "expression": { + "argumentTypes": null, + "id": 7188, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7127, + "src": "2819:11:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 7670, + "src": "2819:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2819:18:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 7183, + "name": "protocolFeePayoutAddress1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7096, + "src": "2782:25:29", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 7186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2782:30:29", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 7187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2782:36:29", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", + "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" + } + }, + "id": 7192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2782:56:29", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 7194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2782:60:29", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "id": 7195, + "nodeType": "ExpressionStatement", + "src": "2782:60:29" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "", + "id": 7206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2913:2:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 7203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2909:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "expression": { + "argumentTypes": null, + "id": 7201, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7127, + "src": "2893:11:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 7670, + "src": "2893:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 7204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2893:18:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3658,18 +4702,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7291, - "name": "protocolFeePayoutAddress", + "id": 7196, + "name": "protocolFeePayoutAddress2", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7207, - "src": "2680:24:29", + "referencedDeclaration": 7099, + "src": "2856:25:29", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 7294, + "id": 7199, "isConstant": false, "isLValue": false, "isPure": false, @@ -3677,13 +4721,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2680:29:29", + "src": "2856:30:29", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 7295, + "id": 7200, "isConstant": false, "isLValue": false, "isPure": false, @@ -3691,13 +4735,13 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2680:35:29", + "src": "2856:36:29", "typeDescriptions": { "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 7297, + "id": 7205, "isConstant": false, "isLValue": false, "isPure": false, @@ -3705,13 +4749,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2680:48:29", + "src": "2856:56:29", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 7299, + "id": 7207, "isConstant": false, "isLValue": false, "isPure": false, @@ -3719,15 +4763,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2680:52:29", + "src": "2856:60:29", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, - "id": 7300, + "id": 7208, "nodeType": "ExpressionStatement", - "src": "2680:52:29" + "src": "2856:60:29" } ] } @@ -3738,12 +4782,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7313, + "id": 7235, "name": "_reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7223, - "src": "2903:8:29", + "referencedDeclaration": 7115, + "src": "3181:8:29", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3754,12 +4798,12 @@ "arguments": [ { "argumentTypes": null, - "id": 7316, + "id": 7238, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7227, - "src": "2925:4:29", + "referencedDeclaration": 7119, + "src": "3203:4:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3775,32 +4819,32 @@ ], "expression": { "argumentTypes": null, - "id": 7314, + "id": 7236, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7225, - "src": "2913:7:29", + "referencedDeclaration": 7117, + "src": "3191:7:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 7315, + "id": 7237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 7655, - "src": "2913:11:29", + "referencedDeclaration": 7577, + "src": "3191:11:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 7317, + "id": 7239, "isConstant": false, "isLValue": false, "isPure": false, @@ -3808,7 +4852,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2913:17:29", + "src": "3191:17:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3826,18 +4870,18 @@ "typeString": "uint256" } ], - "id": 7312, + "id": 7234, "name": "transferFundsBackToPoolInternal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2078, - "src": "2871:31:29", + "src": "3149:31:29", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 7318, + "id": 7240, "isConstant": false, "isLValue": false, "isPure": false, @@ -3845,56 +4889,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2871:60:29", + "src": "3149:60:29", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 7319, + "id": 7241, "nodeType": "ExpressionStatement", - "src": "2871:60:29" + "src": "3149:60:29" } ] }, "documentation": null, - "id": 7321, + "id": 7243, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 7232, + "id": 7124, "modifierName": { "argumentTypes": null, - "id": 7231, + "id": 7123, "name": "auth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2876, - "src": "853:4:29", + "src": "955:4:29", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "853:4:29" + "src": "955:4:29" } ], "name": "executeOperation", "nodeType": "FunctionDefinition", "parameters": { - "id": 7230, + "id": 7122, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7223, + "id": 7115, "name": "_reserve", "nodeType": "VariableDeclaration", - "scope": 7321, - "src": "734:16:29", + "scope": 7243, + "src": "836:16:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3902,10 +4946,10 @@ "typeString": "address" }, "typeName": { - "id": 7222, + "id": 7114, "name": "address", "nodeType": "ElementaryTypeName", - "src": "734:7:29", + "src": "836:7:29", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3917,11 +4961,11 @@ }, { "constant": false, - "id": 7225, + "id": 7117, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 7321, - "src": "760:15:29", + "scope": 7243, + "src": "862:15:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3929,10 +4973,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7224, + "id": 7116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "760:7:29", + "src": "862:7:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3943,11 +4987,11 @@ }, { "constant": false, - "id": 7227, + "id": 7119, "name": "_fee", "nodeType": "VariableDeclaration", - "scope": 7321, - "src": "785:12:29", + "scope": 7243, + "src": "887:12:29", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3955,10 +4999,10 @@ "typeString": "uint256" }, "typeName": { - "id": 7226, + "id": 7118, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "785:7:29", + "src": "887:7:29", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3969,11 +5013,11 @@ }, { "constant": false, - "id": 7229, + "id": 7121, "name": "_params", "nodeType": "VariableDeclaration", - "scope": 7321, - "src": "807:22:29", + "scope": 7243, + "src": "909:22:29", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -3981,10 +5025,10 @@ "typeString": "bytes" }, "typeName": { - "id": 7228, + "id": 7120, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "807:5:29", + "src": "909:5:29", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3994,26 +5038,26 @@ "visibility": "internal" } ], - "src": "724:111:29" + "src": "826:111:29" }, "returnParameters": { - "id": 7233, + "id": 7125, "nodeType": "ParameterList", "parameters": [], - "src": "862:0:29" + "src": "964:0:29" }, - "scope": 7322, - "src": "699:2239:29", + "scope": 7244, + "src": "801:2415:29", "stateMutability": "nonpayable", "superFunction": 353, "visibility": "external" } ], - "scope": 7323, - "src": "318:2622:29" + "scope": 7245, + "src": "318:2900:29" } ], - "src": "109:2831:29" + "src": "109:3109:29" }, "compiler": { "name": "solc", @@ -4021,7 +5065,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.955Z", + "updatedAt": "2020-04-03T04:44:07.219Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DACProxyFactory.json b/packages/smart-contracts/artifacts/DACProxyFactory.json index 2fbd0ce..7bd9779 100644 --- a/packages/smart-contracts/artifacts/DACProxyFactory.json +++ b/packages/smart-contracts/artifacts/DACProxyFactory.json @@ -183,9 +183,9 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cache\",\"type\":\"address\"}],\"name\":\"Created\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"proxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dedgeCompoundManager\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"enterMarketCalldata\",\"type\":\"bytes\"}],\"name\":\"buildAndEnterMarkets\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeCompoundManager\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"enterMarketCalldata\",\"type\":\"bytes\"}],\"name\":\"buildAndEnterMarkets\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dsGuardFactory\",\"outputs\":[{\"internalType\":\"contract DSGuardFactory\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"proxies\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol\":\"DACProxyFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xa93ae0a65d7000bbef6d0a31cd3c2d6f79e37e13db19f127b53e6e707f0507b4\",\"urls\":[\"bzz-raw://931af9f9ea15aade3685b204a6637b1902296f06b4128eb57a066e7ab8929026\",\"dweb:/ipfs/QmSauiKUjz6sXdcWSwvjzwNsr8Gvbj38mh97ikks4dwfbR\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol\":{\"keccak256\":\"0x4fc914255b0bf8c2d9b45c76a864a3c02f1081fe07889126d14f103c37755da1\",\"urls\":[\"bzz-raw://ab17e6aea566c49b8a78f4ef97e0f955b7d0d4bcb1f2c940c4550f64929d889d\",\"dweb:/ipfs/QmUub8jb28wXQRnvLZTZmrYN58xFZTro5gZAhZHseBZMbf\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b5060405161001d906100e8565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051610086906100f6565b604051809103906000f0801580156100a2573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610104565b6103548062003b5a83390190565b6113d98062003eae83390190565b613a4680620001146000396000f3fe60806040523480156200001157600080fd5b5060043610620000885760003560e01c80638e1a55fc11620000635780638e1a55fc1462000266578063c455279114620002b2578063ddd2d6ac1462000339578063f3701da2146200045a5762000088565b80632e5c9848146200008d57806360c7d29514620000d95780636456568b1462000125575b600080fd5b62000097620004e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620000e362000507565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000224600480360360608110156200013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200019b57600080fd5b820183602082011115620001ae57600080fd5b80359060200191846001830284011164010000000083111715620001d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506200052d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200027062000c8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620002f760048036036020811015620002ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000418600480360360408110156200035157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200038f57600080fd5b820183602082011115620003a257600080fd5b80359060200191846001830284011164010000000083111715620003c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505062000cd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200049f600480360360208110156200047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ce7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000628576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000c84565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065b9062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620006ae573d6000803e3d6000fd5b5090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200080557600080fd5b505af11580156200081a573d6000803e3d6000fd5b505050506040513d60208110156200083157600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620008c457600080fd5b505af1158015620008d9573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631cff79cd86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200097e57808201518184015260208101905062000961565b50505050905090810190601f168015620009ac5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015620009cd57600080fd5b505af1158015620009e2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101562000a0d57600080fd5b810190808051604051939291908464010000000082111562000a2e57600080fd5b8382019150602082018581111562000a4557600080fd5b825186600182028301116401000000008211171562000a6357600080fd5b8083526020830192505050908051906020019080838360005b8381101562000a9957808201518184015260208101905062000a7c565b50505050905090810190601f16801562000ac75780820380516001836020036101000a031916815260200191505b50604052505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000b4f57600080fd5b505af115801562000b64573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000be857600080fd5b505af115801562000bfd573d6000803e3d6000fd5b50505050816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b9392505050565b600062000c983362000ce7565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062000cdf3384846200052d565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000de2576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506200124c565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000e159062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000e68573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562000fbf57600080fd5b505af115801562000fd4573d6000803e3d6000fd5b505050506040513d602081101562000feb57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200107e57600080fd5b505af115801562001093573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200111757600080fd5b505af11580156200112c573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620011b057600080fd5b505af1158015620011c5573d6000803e3d6000fd5b50505050816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b919050565b6127b280620012608339019056fe60806040527324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b50604051620027b2380380620027b283398181016040526200008c9190810190620004f2565b600133600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a262000123816200013e60201b60201c565b505062000136816200013e60201b60201c565b5050620007d7565b600062000176336000357fffffffff00000000000000000000000000000000000000000000000000000000166200030460201b60201c565b620001b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001af9062000671565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916846000366040516200023c93929190620006b5565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ae9062000693565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003455760019050620004be565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003a65760019050620004be565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620004075760009050620004be565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401620004679392919062000634565b60206040518083038186803b1580156200048057600080fd5b505afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004bb91908101906200051e565b90505b92915050565b600081519050620004d581620007a3565b92915050565b600081519050620004ec81620007bd565b92915050565b6000602082840312156200050557600080fd5b60006200051584828501620004c4565b91505092915050565b6000602082840312156200053157600080fd5b60006200054184828501620004db565b91505092915050565b62000555816200070d565b82525050565b62000566816200072d565b82525050565b60006200057a8385620006eb565b93506200058983858462000783565b620005948362000792565b840190509392505050565b6000620005ae601483620006fc565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000620005f0601f83620006fc565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b6200062e8162000779565b82525050565b60006060820190506200064b60008301866200054a565b6200065a60208301856200054a565b6200066960408301846200055b565b949350505050565b600060208201905081810360008301526200068c816200059f565b9050919050565b60006020820190508181036000830152620006ae81620005e1565b9050919050565b6000604082019050620006cc600083018662000623565b8181036020830152620006e18184866200056c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200071a8262000759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b620007ae816200070d565b8114620007ba57600080fd5b50565b620007c88162000721565b8114620007d457600080fd5b50565b611fcb80620007e76000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b59190810190611535565b610258565b005b6100d660048036036100d191908101906115b0565b61036e565b6040516100e39190611b4a565b60405180910390f35b610106600480360361010191908101906116ad565b61052a565b604051610114929190611aff565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611b87565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611719565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611a84565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be9190810190611535565b610833565b6040516101d09190611b2f565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611b6c565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611ba2565b60405180910390f35b34801561023b57600080fd5b5061025660048036036102519190810190611604565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611bdf565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611bdf565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611cba565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611c3f565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611b4a565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d9919081019061155e565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611b4a565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd919081019061155e565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611bdf565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611bdf565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611cba565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611c7f565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611bdf565b60405180910390fd5b6000610ab7600285610f9190919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c610fdb565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060206004611048565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050608461110a565b905060608289604051602001610bc89190611c9f565b60405160208183030381529060405289604051602001610be89190611c9f565b60405160208183030381529060405287604051602001610c089190611c9f565b60405160208183030381529060405285604051602001610c2c959493929190611a24565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610d12577356d5e01d5d2f853aa8f4ac5d2ffb4cbbca9e2b0f73ffffffffffffffffffffffffffffffffffffffff1685604051610cc890611a6f565b60006040518083038185875af1925050503d8060008114610d05576040519150601f19603f3d011682016040523d82523d6000602084013e610d0a565b606091505b505050610db5565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7356d5e01d5d2f853aa8f4ac5d2ffb4cbbca9e2b0f876040518363ffffffff1660e01b8152600401610d61929190611a9f565b602060405180830381600087803b158015610d7b57600080fd5b505af1158015610d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610db39190810190611684565b505b610dd18a610dcc8a8c61116590919063ffffffff16565b6111ba565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e1c5760019050610f8b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7b5760019050610f8b565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eda5760009050610f8b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401610f3893929190611ac8565b60206040518083038186803b158015610f5057600080fd5b505afa158015610f64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f889190810190611684565b90505b92915050565b6000610fd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061126e565b905092915050565b60006014820183511015611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90611c1f565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b606081830184511015611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790611c5f565b60405180910390fd5b60608215600081146110ad576040519150602082016040526110fe565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156110eb57805183526020830192506020810190506110ce565b50868552601f19601f8301166040525050505b50809150509392505050565b60608251821061114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690611c5f565b60405180910390fd5b61115d838384865103611048565b905092915050565b6000808284019050838110156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a790611bff565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561122457600080fd5b505afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061125c9190810190611587565b90506112698184846112cf565b505050565b600080831182906112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9190611bbd565b60405180910390fd5b5060008385816112c157fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611385578273ffffffffffffffffffffffffffffffffffffffff168160405161133b90611a6f565b60006040518083038185875af1925050503d8060008114611378576040519150601f19603f3d011682016040523d82523d6000602084013e61137d565b606091505b505050611414565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016113c0929190611a9f565b602060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114129190810190611684565b505b505050565b60008135905061142881611f15565b92915050565b60008151905061143d81611f15565b92915050565b60008151905061145281611f2c565b92915050565b60008151905061146781611f43565b92915050565b60008083601f84011261147f57600080fd5b8235905067ffffffffffffffff81111561149857600080fd5b6020830191508360018202830111156114b057600080fd5b9250929050565b600082601f8301126114c857600080fd5b81356114db6114d682611d19565b611cec565b915080825260208301602083018583830111156114f757600080fd5b611502838284611ec2565b50505092915050565b60008135905061151a81611f5a565b92915050565b60008135905061152f81611f71565b92915050565b60006020828403121561154757600080fd5b600061155584828501611419565b91505092915050565b60006020828403121561157057600080fd5b600061157e8482850161142e565b91505092915050565b60006020828403121561159957600080fd5b60006115a784828501611443565b91505092915050565b600080604083850312156115c357600080fd5b60006115d185828601611419565b925050602083013567ffffffffffffffff8111156115ee57600080fd5b6115fa858286016114b7565b9150509250929050565b60008060008060006080868803121561161c57600080fd5b600061162a88828901611419565b955050602061163b88828901611520565b945050604061164c88828901611520565b935050606086013567ffffffffffffffff81111561166957600080fd5b6116758882890161146d565b92509250509295509295909350565b60006020828403121561169657600080fd5b60006116a484828501611458565b91505092915050565b600080604083850312156116c057600080fd5b600083013567ffffffffffffffff8111156116da57600080fd5b6116e6858286016114b7565b925050602083013567ffffffffffffffff81111561170357600080fd5b61170f858286016114b7565b9150509250929050565b60006020828403121561172b57600080fd5b60006117398482850161150b565b91505092915050565b61174b81611e20565b82525050565b61175a81611d88565b82525050565b61176981611dac565b82525050565b61177881611db8565b82525050565b600061178a8385611d5b565b9350611797838584611ec2565b6117a083611f04565b840190509392505050565b60006117b682611d45565b6117c08185611d5b565b93506117d0818560208601611ed1565b6117d981611f04565b840191505092915050565b60006117ef82611d45565b6117f98185611d6c565b9350611809818560208601611ed1565b80840191505092915050565b61181e81611e32565b82525050565b61182d81611e56565b82525050565b61183c81611e7a565b82525050565b600061184d82611d50565b6118578185611d77565b9350611867818560208601611ed1565b61187081611f04565b840191505092915050565b6000611888601483611d77565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b60006118c8601b83611d77565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611908601283611d77565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611948602083611d77565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611988600083611d6c565b9150600082019050919050565b60006119a2601883611d77565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b60006119e2601f83611d77565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611a1e81611e16565b82525050565b6000611a3082886117e4565b9150611a3c82876117e4565b9150611a4882866117e4565b9150611a5482856117e4565b9150611a6082846117e4565b91508190509695505050505050565b6000611a7a8261197b565b9150819050919050565b6000602082019050611a996000830184611751565b92915050565b6000604082019050611ab46000830185611742565b611ac16020830184611a15565b9392505050565b6000606082019050611add6000830186611751565b611aea6020830185611751565b611af7604083018461176f565b949350505050565b6000604082019050611b146000830185611751565b8181036020830152611b2681846117ab565b90509392505050565b6000602082019050611b446000830184611760565b92915050565b60006020820190508181036000830152611b6481846117ab565b905092915050565b6000602082019050611b816000830184611815565b92915050565b6000602082019050611b9c6000830184611824565b92915050565b6000602082019050611bb76000830184611833565b92915050565b60006020820190508181036000830152611bd78184611842565b905092915050565b60006020820190508181036000830152611bf88161187b565b9050919050565b60006020820190508181036000830152611c18816118bb565b9050919050565b60006020820190508181036000830152611c38816118fb565b9050919050565b60006020820190508181036000830152611c588161193b565b9050919050565b60006020820190508181036000830152611c7881611995565b9050919050565b60006020820190508181036000830152611c98816119d5565b9050919050565b6000602082019050611cb46000830184611a15565b92915050565b6000604082019050611ccf6000830186611a15565b8181036020830152611ce281848661177e565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611d0f57600080fd5b8060405250919050565b600067ffffffffffffffff821115611d3057600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611d9382611df6565b9050919050565b6000611da582611df6565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611def82611d88565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611e2b82611e9e565b9050919050565b6000611e3d82611e44565b9050919050565b6000611e4f82611df6565b9050919050565b6000611e6182611e68565b9050919050565b6000611e7382611df6565b9050919050565b6000611e8582611e8c565b9050919050565b6000611e9782611df6565b9050919050565b6000611ea982611eb0565b9050919050565b6000611ebb82611df6565b9050919050565b82818337600083830152505050565b60005b83811015611eef578082015181840152602081019050611ed4565b83811115611efe576000848401525b50505050565b6000601f19601f8301169050919050565b611f1e81611d88565b8114611f2957600080fd5b50565b611f3581611d9a565b8114611f4057600080fd5b50565b611f4c81611dac565b8114611f5757600080fd5b50565b611f6381611de4565b8114611f6e57600080fd5b50565b611f7a81611e16565b8114611f8557600080fd5b5056fea365627a7a72315820eb72892c84a1dab4e2065281a1aeae5cf9604d918ebcc2bff51238670fae00a56c6578706572696d656e74616cf564736f6c63430005100040a265627a7a723158209ef1327f8ae8fb0d7ee945942272517901cda33f249c102c8fd6630cb07cd98864736f6c63430005100032608060405234801561001057600080fd5b50610334806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c14610136575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610231565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ef6004803603602081101561014c57600080fd5b810190808035906020019064010000000081111561016957600080fd5b82018360208201111561017b57600080fd5b8035906020019184600183028401116401000000008311171561019d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008151602083016000f09050803b156001811461024e57610253565b600080fd5b506000828051906020012090508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000808280519060200120905060008082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505091905056fea265627a7a723158205c680b90a403d8f037d25bb23ad3d42a182a729375fb7624c7649d88b0d8024d64736f6c63430005100032608060405234801561001057600080fd5b506113b9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063489c12021461003b57806365688cc914610097575b600080fd5b61007d6004803603602081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100e1565b604051808215151515815260200191505060405180910390f35b61009f610101565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006020528060005260406000206000915054906101000a900460ff1681565b600060405161010f9061021f565b604051809103906000f08015801561012b573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff166313af4035336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101ad57600080fd5b505af11580156101c1573d6000803e3d6000fd5b5050505060016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555090565b6111588061022d8339019056fe608060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a26110c1806100976000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610225578063b700961314610243578063bf7e214f146102e8578063cbeea68c14610332578063f0217ce5146103a05761009e565b806313af4035146100a35780632bc3217d146100e757806379d88d87146101555780637a9e5e4b146101975780638da5cb5b146101db575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e2565b005b610153600480360360608110156100fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061052b565b005b6101956004803603606081101561016b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061055f565b005b6101d9600480360360208110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610681565b005b6101e36107c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61022d6107ee565b6040518082815260200191505060405180910390f35b6102ce6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610815565b604051808215151515815260200191505060405180910390f35b6102f0610cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039e6004803603606081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cdd565b005b6103e0600480360360608110156103b657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610d11565b005b610410336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b61055a8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff19168361055f565b505050565b61058d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b6105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282960405160405180910390a4505050565b6106af336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b6000808460601b6bffffffffffffffffffffffff1916905060008460601b6bffffffffffffffffffffffff191690506002600083815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1680610913575060026000838152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b8061099f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610a2f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610abb5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610b4b5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610bfa5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610cad5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b925050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d0c8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff191683610d11565b505050565b610d3f336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610db1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6001600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677160405160405180910390a4505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e725760019050611086565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed15760019050611086565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f305760009050611086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a72315820b36af45f5c962802069634aca499d531cac1aeed514356b0d518c59cf816ca6264736f6c63430005100032a265627a7a72315820d6ccd940a34df05dafa52f7ac464e1ab24ab9ff1abc8fa0695cd58194adda98164736f6c63430005100032", - "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000885760003560e01c80638e1a55fc11620000635780638e1a55fc1462000266578063c455279114620002b2578063ddd2d6ac1462000339578063f3701da2146200045a5762000088565b80632e5c9848146200008d57806360c7d29514620000d95780636456568b1462000125575b600080fd5b62000097620004e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620000e362000507565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000224600480360360608110156200013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200019b57600080fd5b820183602082011115620001ae57600080fd5b80359060200191846001830284011164010000000083111715620001d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506200052d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200027062000c8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620002f760048036036020811015620002ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000418600480360360408110156200035157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200038f57600080fd5b820183602082011115620003a257600080fd5b80359060200191846001830284011164010000000083111715620003c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505062000cd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200049f600480360360208110156200047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ce7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000628576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000c84565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065b9062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620006ae573d6000803e3d6000fd5b5090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200080557600080fd5b505af11580156200081a573d6000803e3d6000fd5b505050506040513d60208110156200083157600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620008c457600080fd5b505af1158015620008d9573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631cff79cd86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200097e57808201518184015260208101905062000961565b50505050905090810190601f168015620009ac5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015620009cd57600080fd5b505af1158015620009e2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101562000a0d57600080fd5b810190808051604051939291908464010000000082111562000a2e57600080fd5b8382019150602082018581111562000a4557600080fd5b825186600182028301116401000000008211171562000a6357600080fd5b8083526020830192505050908051906020019080838360005b8381101562000a9957808201518184015260208101905062000a7c565b50505050905090810190601f16801562000ac75780820380516001836020036101000a031916815260200191505b50604052505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000b4f57600080fd5b505af115801562000b64573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000be857600080fd5b505af115801562000bfd573d6000803e3d6000fd5b50505050816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b9392505050565b600062000c983362000ce7565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062000cdf3384846200052d565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000de2576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506200124c565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000e159062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000e68573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562000fbf57600080fd5b505af115801562000fd4573d6000803e3d6000fd5b505050506040513d602081101562000feb57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200107e57600080fd5b505af115801562001093573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200111757600080fd5b505af11580156200112c573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620011b057600080fd5b505af1158015620011c5573d6000803e3d6000fd5b50505050816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b919050565b6127b280620012608339019056fe60806040527324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b50604051620027b2380380620027b283398181016040526200008c9190810190620004f2565b600133600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a262000123816200013e60201b60201c565b505062000136816200013e60201b60201c565b5050620007d7565b600062000176336000357fffffffff00000000000000000000000000000000000000000000000000000000166200030460201b60201c565b620001b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001af9062000671565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916846000366040516200023c93929190620006b5565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ae9062000693565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003455760019050620004be565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003a65760019050620004be565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620004075760009050620004be565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401620004679392919062000634565b60206040518083038186803b1580156200048057600080fd5b505afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004bb91908101906200051e565b90505b92915050565b600081519050620004d581620007a3565b92915050565b600081519050620004ec81620007bd565b92915050565b6000602082840312156200050557600080fd5b60006200051584828501620004c4565b91505092915050565b6000602082840312156200053157600080fd5b60006200054184828501620004db565b91505092915050565b62000555816200070d565b82525050565b62000566816200072d565b82525050565b60006200057a8385620006eb565b93506200058983858462000783565b620005948362000792565b840190509392505050565b6000620005ae601483620006fc565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000620005f0601f83620006fc565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b6200062e8162000779565b82525050565b60006060820190506200064b60008301866200054a565b6200065a60208301856200054a565b6200066960408301846200055b565b949350505050565b600060208201905081810360008301526200068c816200059f565b9050919050565b60006020820190508181036000830152620006ae81620005e1565b9050919050565b6000604082019050620006cc600083018662000623565b8181036020830152620006e18184866200056c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200071a8262000759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b620007ae816200070d565b8114620007ba57600080fd5b50565b620007c88162000721565b8114620007d457600080fd5b50565b611fcb80620007e76000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b59190810190611535565b610258565b005b6100d660048036036100d191908101906115b0565b61036e565b6040516100e39190611b4a565b60405180910390f35b610106600480360361010191908101906116ad565b61052a565b604051610114929190611aff565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611b87565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611719565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611a84565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be9190810190611535565b610833565b6040516101d09190611b2f565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611b6c565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611ba2565b60405180910390f35b34801561023b57600080fd5b5061025660048036036102519190810190611604565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611bdf565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611bdf565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611cba565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611c3f565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611b4a565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d9919081019061155e565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611b4a565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd919081019061155e565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611bdf565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611bdf565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611cba565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611c7f565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ddd565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611bdf565b60405180910390fd5b6000610ab7600285610f9190919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c610fdb565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060206004611048565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050608461110a565b905060608289604051602001610bc89190611c9f565b60405160208183030381529060405289604051602001610be89190611c9f565b60405160208183030381529060405287604051602001610c089190611c9f565b60405160208183030381529060405285604051602001610c2c959493929190611a24565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610d12577356d5e01d5d2f853aa8f4ac5d2ffb4cbbca9e2b0f73ffffffffffffffffffffffffffffffffffffffff1685604051610cc890611a6f565b60006040518083038185875af1925050503d8060008114610d05576040519150601f19603f3d011682016040523d82523d6000602084013e610d0a565b606091505b505050610db5565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7356d5e01d5d2f853aa8f4ac5d2ffb4cbbca9e2b0f876040518363ffffffff1660e01b8152600401610d61929190611a9f565b602060405180830381600087803b158015610d7b57600080fd5b505af1158015610d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610db39190810190611684565b505b610dd18a610dcc8a8c61116590919063ffffffff16565b6111ba565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e1c5760019050610f8b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7b5760019050610f8b565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eda5760009050610f8b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401610f3893929190611ac8565b60206040518083038186803b158015610f5057600080fd5b505afa158015610f64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f889190810190611684565b90505b92915050565b6000610fd383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061126e565b905092915050565b60006014820183511015611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90611c1f565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b606081830184511015611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790611c5f565b60405180910390fd5b60608215600081146110ad576040519150602082016040526110fe565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156110eb57805183526020830192506020810190506110ce565b50868552601f19601f8301166040525050505b50809150509392505050565b60608251821061114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114690611c5f565b60405180910390fd5b61115d838384865103611048565b905092915050565b6000808284019050838110156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a790611bff565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561122457600080fd5b505afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061125c9190810190611587565b90506112698184846112cf565b505050565b600080831182906112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9190611bbd565b60405180910390fd5b5060008385816112c157fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611385578273ffffffffffffffffffffffffffffffffffffffff168160405161133b90611a6f565b60006040518083038185875af1925050503d8060008114611378576040519150601f19603f3d011682016040523d82523d6000602084013e61137d565b606091505b505050611414565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016113c0929190611a9f565b602060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114129190810190611684565b505b505050565b60008135905061142881611f15565b92915050565b60008151905061143d81611f15565b92915050565b60008151905061145281611f2c565b92915050565b60008151905061146781611f43565b92915050565b60008083601f84011261147f57600080fd5b8235905067ffffffffffffffff81111561149857600080fd5b6020830191508360018202830111156114b057600080fd5b9250929050565b600082601f8301126114c857600080fd5b81356114db6114d682611d19565b611cec565b915080825260208301602083018583830111156114f757600080fd5b611502838284611ec2565b50505092915050565b60008135905061151a81611f5a565b92915050565b60008135905061152f81611f71565b92915050565b60006020828403121561154757600080fd5b600061155584828501611419565b91505092915050565b60006020828403121561157057600080fd5b600061157e8482850161142e565b91505092915050565b60006020828403121561159957600080fd5b60006115a784828501611443565b91505092915050565b600080604083850312156115c357600080fd5b60006115d185828601611419565b925050602083013567ffffffffffffffff8111156115ee57600080fd5b6115fa858286016114b7565b9150509250929050565b60008060008060006080868803121561161c57600080fd5b600061162a88828901611419565b955050602061163b88828901611520565b945050604061164c88828901611520565b935050606086013567ffffffffffffffff81111561166957600080fd5b6116758882890161146d565b92509250509295509295909350565b60006020828403121561169657600080fd5b60006116a484828501611458565b91505092915050565b600080604083850312156116c057600080fd5b600083013567ffffffffffffffff8111156116da57600080fd5b6116e6858286016114b7565b925050602083013567ffffffffffffffff81111561170357600080fd5b61170f858286016114b7565b9150509250929050565b60006020828403121561172b57600080fd5b60006117398482850161150b565b91505092915050565b61174b81611e20565b82525050565b61175a81611d88565b82525050565b61176981611dac565b82525050565b61177881611db8565b82525050565b600061178a8385611d5b565b9350611797838584611ec2565b6117a083611f04565b840190509392505050565b60006117b682611d45565b6117c08185611d5b565b93506117d0818560208601611ed1565b6117d981611f04565b840191505092915050565b60006117ef82611d45565b6117f98185611d6c565b9350611809818560208601611ed1565b80840191505092915050565b61181e81611e32565b82525050565b61182d81611e56565b82525050565b61183c81611e7a565b82525050565b600061184d82611d50565b6118578185611d77565b9350611867818560208601611ed1565b61187081611f04565b840191505092915050565b6000611888601483611d77565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b60006118c8601b83611d77565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611908601283611d77565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611948602083611d77565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611988600083611d6c565b9150600082019050919050565b60006119a2601883611d77565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b60006119e2601f83611d77565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611a1e81611e16565b82525050565b6000611a3082886117e4565b9150611a3c82876117e4565b9150611a4882866117e4565b9150611a5482856117e4565b9150611a6082846117e4565b91508190509695505050505050565b6000611a7a8261197b565b9150819050919050565b6000602082019050611a996000830184611751565b92915050565b6000604082019050611ab46000830185611742565b611ac16020830184611a15565b9392505050565b6000606082019050611add6000830186611751565b611aea6020830185611751565b611af7604083018461176f565b949350505050565b6000604082019050611b146000830185611751565b8181036020830152611b2681846117ab565b90509392505050565b6000602082019050611b446000830184611760565b92915050565b60006020820190508181036000830152611b6481846117ab565b905092915050565b6000602082019050611b816000830184611815565b92915050565b6000602082019050611b9c6000830184611824565b92915050565b6000602082019050611bb76000830184611833565b92915050565b60006020820190508181036000830152611bd78184611842565b905092915050565b60006020820190508181036000830152611bf88161187b565b9050919050565b60006020820190508181036000830152611c18816118bb565b9050919050565b60006020820190508181036000830152611c38816118fb565b9050919050565b60006020820190508181036000830152611c588161193b565b9050919050565b60006020820190508181036000830152611c7881611995565b9050919050565b60006020820190508181036000830152611c98816119d5565b9050919050565b6000602082019050611cb46000830184611a15565b92915050565b6000604082019050611ccf6000830186611a15565b8181036020830152611ce281848661177e565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611d0f57600080fd5b8060405250919050565b600067ffffffffffffffff821115611d3057600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611d9382611df6565b9050919050565b6000611da582611df6565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611def82611d88565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611e2b82611e9e565b9050919050565b6000611e3d82611e44565b9050919050565b6000611e4f82611df6565b9050919050565b6000611e6182611e68565b9050919050565b6000611e7382611df6565b9050919050565b6000611e8582611e8c565b9050919050565b6000611e9782611df6565b9050919050565b6000611ea982611eb0565b9050919050565b6000611ebb82611df6565b9050919050565b82818337600083830152505050565b60005b83811015611eef578082015181840152602081019050611ed4565b83811115611efe576000848401525b50505050565b6000601f19601f8301169050919050565b611f1e81611d88565b8114611f2957600080fd5b50565b611f3581611d9a565b8114611f4057600080fd5b50565b611f4c81611dac565b8114611f5757600080fd5b50565b611f6381611de4565b8114611f6e57600080fd5b50565b611f7a81611e16565b8114611f8557600080fd5b5056fea365627a7a72315820eb72892c84a1dab4e2065281a1aeae5cf9604d918ebcc2bff51238670fae00a56c6578706572696d656e74616cf564736f6c63430005100040a265627a7a723158209ef1327f8ae8fb0d7ee945942272517901cda33f249c102c8fd6630cb07cd98864736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cache\",\"type\":\"address\"}],\"name\":\"Created\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"proxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dedgeCompoundManager\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"enterMarketCalldata\",\"type\":\"bytes\"}],\"name\":\"buildAndEnterMarkets\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeCompoundManager\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"enterMarketCalldata\",\"type\":\"bytes\"}],\"name\":\"buildAndEnterMarkets\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dsGuardFactory\",\"outputs\":[{\"internalType\":\"contract DSGuardFactory\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"proxies\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol\":\"DACProxyFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol\":{\"keccak256\":\"0x4fc914255b0bf8c2d9b45c76a864a3c02f1081fe07889126d14f103c37755da1\",\"urls\":[\"bzz-raw://ab17e6aea566c49b8a78f4ef97e0f955b7d0d4bcb1f2c940c4550f64929d889d\",\"dweb:/ipfs/QmUub8jb28wXQRnvLZTZmrYN58xFZTro5gZAhZHseBZMbf\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5060405161001d906100e8565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051610086906100f6565b604051809103906000f0801580156100a2573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610104565b6103548062003cc583390190565b6113d9806200401983390190565b613bb180620001146000396000f3fe60806040523480156200001157600080fd5b5060043610620000885760003560e01c80638e1a55fc11620000635780638e1a55fc1462000266578063c455279114620002b2578063ddd2d6ac1462000339578063f3701da2146200045a5762000088565b80632e5c9848146200008d57806360c7d29514620000d95780636456568b1462000125575b600080fd5b62000097620004e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620000e362000507565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000224600480360360608110156200013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200019b57600080fd5b820183602082011115620001ae57600080fd5b80359060200191846001830284011164010000000083111715620001d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506200052d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200027062000c8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620002f760048036036020811015620002ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000418600480360360408110156200035157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200038f57600080fd5b820183602082011115620003a257600080fd5b80359060200191846001830284011164010000000083111715620003c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505062000cd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200049f600480360360208110156200047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ce7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000628576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000c84565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065b9062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620006ae573d6000803e3d6000fd5b5090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200080557600080fd5b505af11580156200081a573d6000803e3d6000fd5b505050506040513d60208110156200083157600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620008c457600080fd5b505af1158015620008d9573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631cff79cd86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200097e57808201518184015260208101905062000961565b50505050905090810190601f168015620009ac5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015620009cd57600080fd5b505af1158015620009e2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101562000a0d57600080fd5b810190808051604051939291908464010000000082111562000a2e57600080fd5b8382019150602082018581111562000a4557600080fd5b825186600182028301116401000000008211171562000a6357600080fd5b8083526020830192505050908051906020019080838360005b8381101562000a9957808201518184015260208101905062000a7c565b50505050905090810190601f16801562000ac75780820380516001836020036101000a031916815260200191505b50604052505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000b4f57600080fd5b505af115801562000b64573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000be857600080fd5b505af115801562000bfd573d6000803e3d6000fd5b50505050816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b9392505050565b600062000c983362000ce7565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062000cdf3384846200052d565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000de2576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506200124c565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000e159062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000e68573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562000fbf57600080fd5b505af115801562000fd4573d6000803e3d6000fd5b505050506040513d602081101562000feb57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200107e57600080fd5b505af115801562001093573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200111757600080fd5b505af11580156200112c573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620011b057600080fd5b505af1158015620011c5573d6000803e3d6000fd5b50505050816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b919050565b61291d80620012608339019056fe60806040527324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b506040516200291d3803806200291d83398181016040526200008c9190810190620004f2565b600133600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a262000123816200013e60201b60201c565b505062000136816200013e60201b60201c565b5050620007d7565b600062000176336000357fffffffff00000000000000000000000000000000000000000000000000000000166200030460201b60201c565b620001b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001af9062000671565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916846000366040516200023c93929190620006b5565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ae9062000693565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003455760019050620004be565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003a65760019050620004be565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620004075760009050620004be565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401620004679392919062000634565b60206040518083038186803b1580156200048057600080fd5b505afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004bb91908101906200051e565b90505b92915050565b600081519050620004d581620007a3565b92915050565b600081519050620004ec81620007bd565b92915050565b6000602082840312156200050557600080fd5b60006200051584828501620004c4565b91505092915050565b6000602082840312156200053157600080fd5b60006200054184828501620004db565b91505092915050565b62000555816200070d565b82525050565b62000566816200072d565b82525050565b60006200057a8385620006eb565b93506200058983858462000783565b620005948362000792565b840190509392505050565b6000620005ae601483620006fc565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000620005f0601f83620006fc565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b6200062e8162000779565b82525050565b60006060820190506200064b60008301866200054a565b6200065a60208301856200054a565b6200066960408301846200055b565b949350505050565b600060208201905081810360008301526200068c816200059f565b9050919050565b60006020820190508181036000830152620006ae81620005e1565b9050919050565b6000604082019050620006cc600083018662000623565b8181036020830152620006e18184866200056c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200071a8262000759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b620007ae816200070d565b8114620007ba57600080fd5b50565b620007c88162000721565b8114620007d457600080fd5b50565b61213680620007e76000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b591908101906116a0565b610258565b005b6100d660048036036100d1919081019061171b565b61036e565b6040516100e39190611cb5565b60405180910390f35b61010660048036036101019190810190611818565b61052a565b604051610114929190611c6a565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611cf2565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611884565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611bef565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be91908101906116a0565b610833565b6040516101d09190611c9a565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611cd7565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611d0d565b60405180910390f35b34801561023b57600080fd5b506102566004803603610251919081019061176f565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611d4a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611daa565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611cb5565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d991908101906116c9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611cb5565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd91908101906116c9565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611d4a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611dea565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611d4a565b60405180910390fd5b6000610ab76002856110fc90919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c611146565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050602060046111b3565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506084611275565b905060608289604051602001610bc89190611e0a565b60405160208183030381529060405289604051602001610be89190611e0a565b60405160208183030381529060405287604051602001610c089190611e0a565b60405160208183030381529060405285604051602001610c2c959493929190611b8f565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610db55773773ccbfb422850617a5680d40b1260422d072f4173ffffffffffffffffffffffffffffffffffffffff16610ccf6002876110fc90919063ffffffff16565b604051610cdb90611bda565b60006040518083038185875af1925050503d8060008114610d18576040519150601f19603f3d011682016040523d82523d6000602084013e610d1d565b606091505b50505073abccb8f0a3c206bb0468c52ccc20f3b81077417b73ffffffffffffffffffffffffffffffffffffffff16610d5f6002876110fc90919063ffffffff16565b604051610d6b90611bda565b60006040518083038185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b505050610f20565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f41610dfa6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610e17929190611c0a565b602060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6991908101906117ef565b508973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b610eaf6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610ecc929190611c0a565b602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f1e91908101906117ef565b505b610f3c8a610f378a8c6112d090919063ffffffff16565b611325565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8757600190506110f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe657600190506110f6565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561104557600090506110f6565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b81526004016110a393929190611c33565b60206040518083038186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f391908101906117ef565b90505b92915050565b600061113e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113d9565b905092915050565b6000601482018351101561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690611d8a565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290611dca565b60405180910390fd5b606082156000811461121857604051915060208201604052611269565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112565780518352602083019250602081019050611239565b50868552601f19601f8301166040525050505b50809150509392505050565b6060825182106112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611dca565b60405180910390fd5b6112c88383848651036111b3565b905092915050565b60008082840190508381101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290611d6a565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561138f57600080fd5b505afa1580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906116f2565b90506113d481848461143a565b505050565b60008083118290611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179190611d28565b60405180910390fd5b50600083858161142c57fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f0578273ffffffffffffffffffffffffffffffffffffffff16816040516114a690611bda565b60006040518083038185875af1925050503d80600081146114e3576040519150601f19603f3d011682016040523d82523d6000602084013e6114e8565b606091505b50505061157f565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161152b929190611c0a565b602060405180830381600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157d91908101906117ef565b505b505050565b60008135905061159381612080565b92915050565b6000815190506115a881612080565b92915050565b6000815190506115bd81612097565b92915050565b6000815190506115d2816120ae565b92915050565b60008083601f8401126115ea57600080fd5b8235905067ffffffffffffffff81111561160357600080fd5b60208301915083600182028301111561161b57600080fd5b9250929050565b600082601f83011261163357600080fd5b813561164661164182611e84565b611e57565b9150808252602083016020830185838301111561166257600080fd5b61166d83828461202d565b50505092915050565b600081359050611685816120c5565b92915050565b60008135905061169a816120dc565b92915050565b6000602082840312156116b257600080fd5b60006116c084828501611584565b91505092915050565b6000602082840312156116db57600080fd5b60006116e984828501611599565b91505092915050565b60006020828403121561170457600080fd5b6000611712848285016115ae565b91505092915050565b6000806040838503121561172e57600080fd5b600061173c85828601611584565b925050602083013567ffffffffffffffff81111561175957600080fd5b61176585828601611622565b9150509250929050565b60008060008060006080868803121561178757600080fd5b600061179588828901611584565b95505060206117a68882890161168b565b94505060406117b78882890161168b565b935050606086013567ffffffffffffffff8111156117d457600080fd5b6117e0888289016115d8565b92509250509295509295909350565b60006020828403121561180157600080fd5b600061180f848285016115c3565b91505092915050565b6000806040838503121561182b57600080fd5b600083013567ffffffffffffffff81111561184557600080fd5b61185185828601611622565b925050602083013567ffffffffffffffff81111561186e57600080fd5b61187a85828601611622565b9150509250929050565b60006020828403121561189657600080fd5b60006118a484828501611676565b91505092915050565b6118b681611f8b565b82525050565b6118c581611ef3565b82525050565b6118d481611f17565b82525050565b6118e381611f23565b82525050565b60006118f58385611ec6565b935061190283858461202d565b61190b8361206f565b840190509392505050565b600061192182611eb0565b61192b8185611ec6565b935061193b81856020860161203c565b6119448161206f565b840191505092915050565b600061195a82611eb0565b6119648185611ed7565b935061197481856020860161203c565b80840191505092915050565b61198981611f9d565b82525050565b61199881611fc1565b82525050565b6119a781611fe5565b82525050565b60006119b882611ebb565b6119c28185611ee2565b93506119d281856020860161203c565b6119db8161206f565b840191505092915050565b60006119f3601483611ee2565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000611a33601b83611ee2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611a73601283611ee2565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611ab3602083611ee2565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611af3600083611ed7565b9150600082019050919050565b6000611b0d601883611ee2565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b6000611b4d601f83611ee2565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611b8981611f81565b82525050565b6000611b9b828861194f565b9150611ba7828761194f565b9150611bb3828661194f565b9150611bbf828561194f565b9150611bcb828461194f565b91508190509695505050505050565b6000611be582611ae6565b9150819050919050565b6000602082019050611c0460008301846118bc565b92915050565b6000604082019050611c1f60008301856118ad565b611c2c6020830184611b80565b9392505050565b6000606082019050611c4860008301866118bc565b611c5560208301856118bc565b611c6260408301846118da565b949350505050565b6000604082019050611c7f60008301856118bc565b8181036020830152611c918184611916565b90509392505050565b6000602082019050611caf60008301846118cb565b92915050565b60006020820190508181036000830152611ccf8184611916565b905092915050565b6000602082019050611cec6000830184611980565b92915050565b6000602082019050611d07600083018461198f565b92915050565b6000602082019050611d22600083018461199e565b92915050565b60006020820190508181036000830152611d4281846119ad565b905092915050565b60006020820190508181036000830152611d63816119e6565b9050919050565b60006020820190508181036000830152611d8381611a26565b9050919050565b60006020820190508181036000830152611da381611a66565b9050919050565b60006020820190508181036000830152611dc381611aa6565b9050919050565b60006020820190508181036000830152611de381611b00565b9050919050565b60006020820190508181036000830152611e0381611b40565b9050919050565b6000602082019050611e1f6000830184611b80565b92915050565b6000604082019050611e3a6000830186611b80565b8181036020830152611e4d8184866118e9565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611e7a57600080fd5b8060405250919050565b600067ffffffffffffffff821115611e9b57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611efe82611f61565b9050919050565b6000611f1082611f61565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611f5a82611ef3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f9682612009565b9050919050565b6000611fa882611faf565b9050919050565b6000611fba82611f61565b9050919050565b6000611fcc82611fd3565b9050919050565b6000611fde82611f61565b9050919050565b6000611ff082611ff7565b9050919050565b600061200282611f61565b9050919050565b60006120148261201b565b9050919050565b600061202682611f61565b9050919050565b82818337600083830152505050565b60005b8381101561205a57808201518184015260208101905061203f565b83811115612069576000848401525b50505050565b6000601f19601f8301169050919050565b61208981611ef3565b811461209457600080fd5b50565b6120a081611f05565b81146120ab57600080fd5b50565b6120b781611f17565b81146120c257600080fd5b50565b6120ce81611f4f565b81146120d957600080fd5b50565b6120e581611f81565b81146120f057600080fd5b5056fea365627a7a72315820a7e949e4f7bad72e45825d8ae15370f38f5f0a3f0755fc55d0f5833c02f1aa736c6578706572696d656e74616cf564736f6c63430005100040a265627a7a723158209e84e9dd3f6235e0625e94e4ffdac73a8ed158770886313cb62353a9ba1b6ca964736f6c63430005100032608060405234801561001057600080fd5b50610334806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c14610136575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610231565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ef6004803603602081101561014c57600080fd5b810190808035906020019064010000000081111561016957600080fd5b82018360208201111561017b57600080fd5b8035906020019184600183028401116401000000008311171561019d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008151602083016000f09050803b156001811461024e57610253565b600080fd5b506000828051906020012090508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000808280519060200120905060008082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505091905056fea265627a7a723158205c680b90a403d8f037d25bb23ad3d42a182a729375fb7624c7649d88b0d8024d64736f6c63430005100032608060405234801561001057600080fd5b506113b9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063489c12021461003b57806365688cc914610097575b600080fd5b61007d6004803603602081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100e1565b604051808215151515815260200191505060405180910390f35b61009f610101565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006020528060005260406000206000915054906101000a900460ff1681565b600060405161010f9061021f565b604051809103906000f08015801561012b573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff166313af4035336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101ad57600080fd5b505af11580156101c1573d6000803e3d6000fd5b5050505060016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555090565b6111588061022d8339019056fe608060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a26110c1806100976000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610225578063b700961314610243578063bf7e214f146102e8578063cbeea68c14610332578063f0217ce5146103a05761009e565b806313af4035146100a35780632bc3217d146100e757806379d88d87146101555780637a9e5e4b146101975780638da5cb5b146101db575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e2565b005b610153600480360360608110156100fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061052b565b005b6101956004803603606081101561016b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061055f565b005b6101d9600480360360208110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610681565b005b6101e36107c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61022d6107ee565b6040518082815260200191505060405180910390f35b6102ce6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610815565b604051808215151515815260200191505060405180910390f35b6102f0610cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039e6004803603606081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cdd565b005b6103e0600480360360608110156103b657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610d11565b005b610410336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b61055a8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff19168361055f565b505050565b61058d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b6105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282960405160405180910390a4505050565b6106af336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b6000808460601b6bffffffffffffffffffffffff1916905060008460601b6bffffffffffffffffffffffff191690506002600083815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1680610913575060026000838152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b8061099f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610a2f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610abb5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610b4b5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610bfa5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610cad5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b925050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d0c8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff191683610d11565b505050565b610d3f336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610db1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6001600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677160405160405180910390a4505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e725760019050611086565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed15760019050611086565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f305760009050611086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a72315820b36af45f5c962802069634aca499d531cac1aeed514356b0d518c59cf816ca6264736f6c63430005100032a265627a7a72315820d6ccd940a34df05dafa52f7ac464e1ab24ab9ff1abc8fa0695cd58194adda98164736f6c63430005100032", + "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000885760003560e01c80638e1a55fc11620000635780638e1a55fc1462000266578063c455279114620002b2578063ddd2d6ac1462000339578063f3701da2146200045a5762000088565b80632e5c9848146200008d57806360c7d29514620000d95780636456568b1462000125575b600080fd5b62000097620004e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620000e362000507565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000224600480360360608110156200013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200019b57600080fd5b820183602082011115620001ae57600080fd5b80359060200191846001830284011164010000000083111715620001d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506200052d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200027062000c8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620002f760048036036020811015620002ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000418600480360360408110156200035157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200038f57600080fd5b820183602082011115620003a257600080fd5b80359060200191846001830284011164010000000083111715620003c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505062000cd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200049f600480360360208110156200047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ce7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000628576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000c84565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065b9062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620006ae573d6000803e3d6000fd5b5090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200080557600080fd5b505af11580156200081a573d6000803e3d6000fd5b505050506040513d60208110156200083157600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620008c457600080fd5b505af1158015620008d9573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631cff79cd86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200097e57808201518184015260208101905062000961565b50505050905090810190601f168015620009ac5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015620009cd57600080fd5b505af1158015620009e2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101562000a0d57600080fd5b810190808051604051939291908464010000000082111562000a2e57600080fd5b8382019150602082018581111562000a4557600080fd5b825186600182028301116401000000008211171562000a6357600080fd5b8083526020830192505050908051906020019080838360005b8381101562000a9957808201518184015260208101905062000a7c565b50505050905090810190601f16801562000ac75780820380516001836020036101000a031916815260200191505b50604052505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000b4f57600080fd5b505af115801562000b64573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000be857600080fd5b505af115801562000bfd573d6000803e3d6000fd5b50505050816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b9392505050565b600062000c983362000ce7565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062000cdf3384846200052d565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000de2576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506200124c565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000e159062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000e68573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562000fbf57600080fd5b505af115801562000fd4573d6000803e3d6000fd5b505050506040513d602081101562000feb57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200107e57600080fd5b505af115801562001093573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200111757600080fd5b505af11580156200112c573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620011b057600080fd5b505af1158015620011c5573d6000803e3d6000fd5b50505050816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b919050565b61291d80620012608339019056fe60806040527324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b506040516200291d3803806200291d83398181016040526200008c9190810190620004f2565b600133600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a262000123816200013e60201b60201c565b505062000136816200013e60201b60201c565b5050620007d7565b600062000176336000357fffffffff00000000000000000000000000000000000000000000000000000000166200030460201b60201c565b620001b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001af9062000671565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916846000366040516200023c93929190620006b5565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ae9062000693565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003455760019050620004be565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003a65760019050620004be565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620004075760009050620004be565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401620004679392919062000634565b60206040518083038186803b1580156200048057600080fd5b505afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004bb91908101906200051e565b90505b92915050565b600081519050620004d581620007a3565b92915050565b600081519050620004ec81620007bd565b92915050565b6000602082840312156200050557600080fd5b60006200051584828501620004c4565b91505092915050565b6000602082840312156200053157600080fd5b60006200054184828501620004db565b91505092915050565b62000555816200070d565b82525050565b62000566816200072d565b82525050565b60006200057a8385620006eb565b93506200058983858462000783565b620005948362000792565b840190509392505050565b6000620005ae601483620006fc565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000620005f0601f83620006fc565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b6200062e8162000779565b82525050565b60006060820190506200064b60008301866200054a565b6200065a60208301856200054a565b6200066960408301846200055b565b949350505050565b600060208201905081810360008301526200068c816200059f565b9050919050565b60006020820190508181036000830152620006ae81620005e1565b9050919050565b6000604082019050620006cc600083018662000623565b8181036020830152620006e18184866200056c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200071a8262000759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b620007ae816200070d565b8114620007ba57600080fd5b50565b620007c88162000721565b8114620007d457600080fd5b50565b61213680620007e76000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b591908101906116a0565b610258565b005b6100d660048036036100d1919081019061171b565b61036e565b6040516100e39190611cb5565b60405180910390f35b61010660048036036101019190810190611818565b61052a565b604051610114929190611c6a565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611cf2565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611884565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611bef565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be91908101906116a0565b610833565b6040516101d09190611c9a565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611cd7565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611d0d565b60405180910390f35b34801561023b57600080fd5b506102566004803603610251919081019061176f565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611d4a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611daa565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611cb5565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d991908101906116c9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611cb5565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd91908101906116c9565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611d4a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611dea565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611d4a565b60405180910390fd5b6000610ab76002856110fc90919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c611146565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050602060046111b3565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506084611275565b905060608289604051602001610bc89190611e0a565b60405160208183030381529060405289604051602001610be89190611e0a565b60405160208183030381529060405287604051602001610c089190611e0a565b60405160208183030381529060405285604051602001610c2c959493929190611b8f565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610db55773773ccbfb422850617a5680d40b1260422d072f4173ffffffffffffffffffffffffffffffffffffffff16610ccf6002876110fc90919063ffffffff16565b604051610cdb90611bda565b60006040518083038185875af1925050503d8060008114610d18576040519150601f19603f3d011682016040523d82523d6000602084013e610d1d565b606091505b50505073abccb8f0a3c206bb0468c52ccc20f3b81077417b73ffffffffffffffffffffffffffffffffffffffff16610d5f6002876110fc90919063ffffffff16565b604051610d6b90611bda565b60006040518083038185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b505050610f20565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f41610dfa6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610e17929190611c0a565b602060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6991908101906117ef565b508973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b610eaf6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610ecc929190611c0a565b602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f1e91908101906117ef565b505b610f3c8a610f378a8c6112d090919063ffffffff16565b611325565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8757600190506110f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe657600190506110f6565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561104557600090506110f6565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b81526004016110a393929190611c33565b60206040518083038186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f391908101906117ef565b90505b92915050565b600061113e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113d9565b905092915050565b6000601482018351101561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690611d8a565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290611dca565b60405180910390fd5b606082156000811461121857604051915060208201604052611269565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112565780518352602083019250602081019050611239565b50868552601f19601f8301166040525050505b50809150509392505050565b6060825182106112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611dca565b60405180910390fd5b6112c88383848651036111b3565b905092915050565b60008082840190508381101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290611d6a565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561138f57600080fd5b505afa1580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906116f2565b90506113d481848461143a565b505050565b60008083118290611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179190611d28565b60405180910390fd5b50600083858161142c57fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f0578273ffffffffffffffffffffffffffffffffffffffff16816040516114a690611bda565b60006040518083038185875af1925050503d80600081146114e3576040519150601f19603f3d011682016040523d82523d6000602084013e6114e8565b606091505b50505061157f565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161152b929190611c0a565b602060405180830381600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157d91908101906117ef565b505b505050565b60008135905061159381612080565b92915050565b6000815190506115a881612080565b92915050565b6000815190506115bd81612097565b92915050565b6000815190506115d2816120ae565b92915050565b60008083601f8401126115ea57600080fd5b8235905067ffffffffffffffff81111561160357600080fd5b60208301915083600182028301111561161b57600080fd5b9250929050565b600082601f83011261163357600080fd5b813561164661164182611e84565b611e57565b9150808252602083016020830185838301111561166257600080fd5b61166d83828461202d565b50505092915050565b600081359050611685816120c5565b92915050565b60008135905061169a816120dc565b92915050565b6000602082840312156116b257600080fd5b60006116c084828501611584565b91505092915050565b6000602082840312156116db57600080fd5b60006116e984828501611599565b91505092915050565b60006020828403121561170457600080fd5b6000611712848285016115ae565b91505092915050565b6000806040838503121561172e57600080fd5b600061173c85828601611584565b925050602083013567ffffffffffffffff81111561175957600080fd5b61176585828601611622565b9150509250929050565b60008060008060006080868803121561178757600080fd5b600061179588828901611584565b95505060206117a68882890161168b565b94505060406117b78882890161168b565b935050606086013567ffffffffffffffff8111156117d457600080fd5b6117e0888289016115d8565b92509250509295509295909350565b60006020828403121561180157600080fd5b600061180f848285016115c3565b91505092915050565b6000806040838503121561182b57600080fd5b600083013567ffffffffffffffff81111561184557600080fd5b61185185828601611622565b925050602083013567ffffffffffffffff81111561186e57600080fd5b61187a85828601611622565b9150509250929050565b60006020828403121561189657600080fd5b60006118a484828501611676565b91505092915050565b6118b681611f8b565b82525050565b6118c581611ef3565b82525050565b6118d481611f17565b82525050565b6118e381611f23565b82525050565b60006118f58385611ec6565b935061190283858461202d565b61190b8361206f565b840190509392505050565b600061192182611eb0565b61192b8185611ec6565b935061193b81856020860161203c565b6119448161206f565b840191505092915050565b600061195a82611eb0565b6119648185611ed7565b935061197481856020860161203c565b80840191505092915050565b61198981611f9d565b82525050565b61199881611fc1565b82525050565b6119a781611fe5565b82525050565b60006119b882611ebb565b6119c28185611ee2565b93506119d281856020860161203c565b6119db8161206f565b840191505092915050565b60006119f3601483611ee2565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000611a33601b83611ee2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611a73601283611ee2565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611ab3602083611ee2565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611af3600083611ed7565b9150600082019050919050565b6000611b0d601883611ee2565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b6000611b4d601f83611ee2565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611b8981611f81565b82525050565b6000611b9b828861194f565b9150611ba7828761194f565b9150611bb3828661194f565b9150611bbf828561194f565b9150611bcb828461194f565b91508190509695505050505050565b6000611be582611ae6565b9150819050919050565b6000602082019050611c0460008301846118bc565b92915050565b6000604082019050611c1f60008301856118ad565b611c2c6020830184611b80565b9392505050565b6000606082019050611c4860008301866118bc565b611c5560208301856118bc565b611c6260408301846118da565b949350505050565b6000604082019050611c7f60008301856118bc565b8181036020830152611c918184611916565b90509392505050565b6000602082019050611caf60008301846118cb565b92915050565b60006020820190508181036000830152611ccf8184611916565b905092915050565b6000602082019050611cec6000830184611980565b92915050565b6000602082019050611d07600083018461198f565b92915050565b6000602082019050611d22600083018461199e565b92915050565b60006020820190508181036000830152611d4281846119ad565b905092915050565b60006020820190508181036000830152611d63816119e6565b9050919050565b60006020820190508181036000830152611d8381611a26565b9050919050565b60006020820190508181036000830152611da381611a66565b9050919050565b60006020820190508181036000830152611dc381611aa6565b9050919050565b60006020820190508181036000830152611de381611b00565b9050919050565b60006020820190508181036000830152611e0381611b40565b9050919050565b6000602082019050611e1f6000830184611b80565b92915050565b6000604082019050611e3a6000830186611b80565b8181036020830152611e4d8184866118e9565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611e7a57600080fd5b8060405250919050565b600067ffffffffffffffff821115611e9b57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611efe82611f61565b9050919050565b6000611f1082611f61565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611f5a82611ef3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f9682612009565b9050919050565b6000611fa882611faf565b9050919050565b6000611fba82611f61565b9050919050565b6000611fcc82611fd3565b9050919050565b6000611fde82611f61565b9050919050565b6000611ff082611ff7565b9050919050565b600061200282611f61565b9050919050565b60006120148261201b565b9050919050565b600061202682611f61565b9050919050565b82818337600083830152505050565b60005b8381101561205a57808201518184015260208101905061203f565b83811115612069576000848401525b50505050565b6000601f19601f8301169050919050565b61208981611ef3565b811461209457600080fd5b50565b6120a081611f05565b81146120ab57600080fd5b50565b6120b781611f17565b81146120c257600080fd5b50565b6120ce81611f4f565b81146120d957600080fd5b50565b6120e581611f81565b81146120f057600080fd5b5056fea365627a7a72315820a7e949e4f7bad72e45825d8ae15370f38f5f0a3f0755fc55d0f5833c02f1aa736c6578706572696d656e74616cf564736f6c63430005100040a265627a7a723158209e84e9dd3f6235e0625e94e4ffdac73a8ed158770886313cb62353a9ba1b6ca964736f6c63430005100032", "sourceMap": "138:2544:30:-;;;387:111;8:9:-1;5:2;;;30:1;27;20:12;5:2;387:111:30;426:18;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;426:18:30;418:5;;:26;;;;;;;;;;;;;;;;;;471:20;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;471:20:30;454:14;;:37;;;;;;;;;;;;;;;;;;138:2544;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;", "deployedSourceMap": "138:2544:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;138:2544:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;313:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1784:896;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1784:896:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1784:896:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1784:896:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1784:896:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1784:896:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;577:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;266:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;266:40:30;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1530:248;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1530:248:30;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1530:248:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1530:248:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1530:248:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1530:248:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;778:641;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:641:30;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;344:36;;;;;;;;;;;;;:::o;313:25::-;;;;;;;;;;;;;:::o;1784:896::-;1939:15;2062:1;2036:28;;:7;:14;2044:5;2036:14;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;2032:98;;2103:7;:14;2111:5;2103:14;;;;;;;;;;;;;;;;;;;;;;;;;2080:39;;;;2032:98;2140:21;2193:5;;;;;;;;;;;2172:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2172:28:30;2140:61;;2236:5;2216:58;;2224:10;2216:58;;;2251:5;2267;;;;;;;;;;;2216:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2285:13;2301:14;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2301:25:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2301:25:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2301:25:30;;;;;;;;;;;;;;;;2285:41;;2336:5;:14;;;2351:5;2336:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2336:21:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2336:21:30;;;;2439:5;2430:23;;;2467:20;2501:19;2430:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2430:100:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2430:100:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2430:100:30;;;;;;39:16:-1;36:1;17:17;2:54;2430:100:30;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2430:100:30;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;2430:100:30;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2430:100:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2550:5;2541:28;;;2570:5;2541:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2541:35:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2541:35:30;;;;2595:5;2586:24;;;2611:5;2586:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2586:31:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2586:31:30;;;;2645:5;2628:7;:14;2636:5;2628:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2668:5;2661:12;;;;1784:896;;;;;;:::o;577:98::-;610:21;651:17;657:10;651:5;:17::i;:::-;643:25;;577:98;:::o;266:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;1530:248::-;1662:15;1696:75;1717:10;1729:20;1751:19;1696:20;:75::i;:::-;1689:82;;1530:248;;;;:::o;778:641::-;824:15;947:1;921:28;;:7;:14;929:5;921:14;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;917:98;;988:7;:14;996:5;988:14;;;;;;;;;;;;;;;;;;;;;;;;;965:39;;;;917:98;1025:21;1078:5;;;;;;;;;;;1057:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1057:28:30;1025:61;;1121:5;1101:58;;1109:10;1101:58;;;1136:5;1152;;;;;;;;;;;1101:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:13;1186:14;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1186:25:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1186:25:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1186:25:30;;;;;;;;;;;;;;;;1170:41;;1221:5;:14;;;1236:5;1221:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1221:21:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1221:21:30;;;;1289:5;1280:28;;;1309:5;1280:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1280:35:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1280:35:30;;;;1334:5;1325:24;;;1350:5;1325:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1325:31:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1325:31:30;;;;1384:5;1367:7;:14;1375:5;1367:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;1407:5;1400:12;;;;778:641;;;;:::o;138:2544::-;;;;;;;;:::o", "source": "pragma solidity 0.5.16;\n\nimport \"./DACProxy.sol\";\n\nimport \"../lib/dapphub/Guard.sol\";\n\nimport \"../interfaces/compound/IComptroller.sol\";\n\ncontract DACProxyFactory {\n event Created(address indexed sender, address indexed owner, address proxy, address cache);\n\n mapping(address=>address) public proxies;\n\n DSProxyCache public cache;\n DSGuardFactory public dsGuardFactory;\n\n constructor() public {\n cache = new DSProxyCache();\n dsGuardFactory = new DSGuardFactory();\n }\n\n // deploys a new proxy instance\n // sets owner of proxy to caller\n function build() public returns (address payable proxy) {\n proxy = build(msg.sender);\n }\n\n // deploys a new proxy instance\n // creates a new guard\n // sets custom owner of proxy\n function build(address owner) public returns (address payable) {\n // If user already has a proxy build, return that instead\n if (proxies[owner] != address(0)) {\n return address(uint160(proxies[owner]));\n }\n\n address payable proxy = address(new DACProxy(address(cache)));\n emit Created(msg.sender, owner, address(proxy), address(cache));\n\n DSGuard guard = dsGuardFactory.newGuard();\n guard.setOwner(proxy); // Guard belongs to proxy\n\n DACProxy(proxy).setAuthority(guard);\n DACProxy(proxy).setOwner(owner);\n\n proxies[owner] = proxy;\n\n return proxy;\n }\n\n // Compound-specific code to enter markets upon proxy creation\n // So user has to perform less TX\n function buildAndEnterMarkets(\n address dedgeCompoundManager,\n bytes memory enterMarketCalldata\n ) public returns (address payable) {\n return buildAndEnterMarkets(msg.sender, dedgeCompoundManager, enterMarketCalldata);\n }\n\n function buildAndEnterMarkets(\n address owner,\n address dedgeCompoundManager,\n bytes memory enterMarketCalldata\n ) public returns (address payable) {\n // If user already has a proxy build, return that instead\n if (proxies[owner] != address(0)) {\n return address(uint160(proxies[owner]));\n }\n\n address payable proxy = address(new DACProxy(address(cache)));\n emit Created(msg.sender, owner, address(proxy), address(cache));\n\n DSGuard guard = dsGuardFactory.newGuard();\n guard.setOwner(proxy); // Guard belongs to proxy\n\n // Enter markets via proxy\n DACProxy(proxy).execute(\n dedgeCompoundManager,\n enterMarketCalldata\n );\n\n DACProxy(proxy).setAuthority(guard);\n DACProxy(proxy).setOwner(owner);\n\n proxies[owner] = proxy;\n\n return proxy;\n }\n}", @@ -194,14 +194,14 @@ "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol", "exportedSymbols": { "DACProxyFactory": [ - 7568 + 7490 ] }, - "id": 7569, + "id": 7491, "nodeType": "SourceUnit", "nodes": [ { - "id": 7324, + "id": 7246, "literals": [ "solidity", "0.5", @@ -213,10 +213,10 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", "file": "./DACProxy.sol", - "id": 7325, + "id": 7247, "nodeType": "ImportDirective", - "scope": 7569, - "sourceUnit": 7323, + "scope": 7491, + "sourceUnit": 7245, "src": "25:24:30", "symbolAliases": [], "unitAlias": "" @@ -224,9 +224,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol", "file": "../lib/dapphub/Guard.sol", - "id": 7326, + "id": 7248, "nodeType": "ImportDirective", - "scope": 7569, + "scope": 7491, "sourceUnit": 3196, "src": "51:34:30", "symbolAliases": [], @@ -235,9 +235,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol", "file": "../interfaces/compound/IComptroller.sol", - "id": 7327, + "id": 7249, "nodeType": "ImportDirective", - "scope": 7569, + "scope": 7491, "sourceUnit": 1097, "src": "87:49:30", "symbolAliases": [], @@ -248,14 +248,14 @@ "contractDependencies": [ 3195, 3788, - 7322 + 7244 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 7568, + "id": 7490, "linearizedBaseContracts": [ - 7568 + 7490 ], "name": "DACProxyFactory", "nodeType": "ContractDefinition", @@ -263,20 +263,20 @@ { "anonymous": false, "documentation": null, - "id": 7337, + "id": 7259, "name": "Created", "nodeType": "EventDefinition", "parameters": { - "id": 7336, + "id": 7258, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7329, + "id": 7251, "indexed": true, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 7337, + "scope": 7259, "src": "183:22:30", "stateVariable": false, "storageLocation": "default", @@ -285,7 +285,7 @@ "typeString": "address" }, "typeName": { - "id": 7328, + "id": 7250, "name": "address", "nodeType": "ElementaryTypeName", "src": "183:7:30", @@ -300,11 +300,11 @@ }, { "constant": false, - "id": 7331, + "id": 7253, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 7337, + "scope": 7259, "src": "207:21:30", "stateVariable": false, "storageLocation": "default", @@ -313,7 +313,7 @@ "typeString": "address" }, "typeName": { - "id": 7330, + "id": 7252, "name": "address", "nodeType": "ElementaryTypeName", "src": "207:7:30", @@ -328,11 +328,11 @@ }, { "constant": false, - "id": 7333, + "id": 7255, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 7337, + "scope": 7259, "src": "230:13:30", "stateVariable": false, "storageLocation": "default", @@ -341,7 +341,7 @@ "typeString": "address" }, "typeName": { - "id": 7332, + "id": 7254, "name": "address", "nodeType": "ElementaryTypeName", "src": "230:7:30", @@ -356,11 +356,11 @@ }, { "constant": false, - "id": 7335, + "id": 7257, "indexed": false, "name": "cache", "nodeType": "VariableDeclaration", - "scope": 7337, + "scope": 7259, "src": "245:13:30", "stateVariable": false, "storageLocation": "default", @@ -369,7 +369,7 @@ "typeString": "address" }, "typeName": { - "id": 7334, + "id": 7256, "name": "address", "nodeType": "ElementaryTypeName", "src": "245:7:30", @@ -389,10 +389,10 @@ }, { "constant": false, - "id": 7341, + "id": 7263, "name": "proxies", "nodeType": "VariableDeclaration", - "scope": 7568, + "scope": 7490, "src": "266:40:30", "stateVariable": true, "storageLocation": "default", @@ -401,9 +401,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 7340, + "id": 7262, "keyType": { - "id": 7338, + "id": 7260, "name": "address", "nodeType": "ElementaryTypeName", "src": "274:7:30", @@ -419,7 +419,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 7339, + "id": 7261, "name": "address", "nodeType": "ElementaryTypeName", "src": "283:7:30", @@ -435,10 +435,10 @@ }, { "constant": false, - "id": 7343, + "id": 7265, "name": "cache", "nodeType": "VariableDeclaration", - "scope": 7568, + "scope": 7490, "src": "313:25:30", "stateVariable": true, "storageLocation": "default", @@ -448,7 +448,7 @@ }, "typeName": { "contractScope": null, - "id": 7342, + "id": 7264, "name": "DSProxyCache", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3788, @@ -463,10 +463,10 @@ }, { "constant": false, - "id": 7345, + "id": 7267, "name": "dsGuardFactory", "nodeType": "VariableDeclaration", - "scope": 7568, + "scope": 7490, "src": "344:36:30", "stateVariable": true, "storageLocation": "default", @@ -476,7 +476,7 @@ }, "typeName": { "contractScope": null, - "id": 7344, + "id": 7266, "name": "DSGuardFactory", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3195, @@ -491,25 +491,25 @@ }, { "body": { - "id": 7360, + "id": 7282, "nodeType": "Block", "src": "408:90:30", "statements": [ { "expression": { "argumentTypes": null, - "id": 7352, + "id": 7274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 7348, + "id": 7270, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "418:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -523,7 +523,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 7350, + "id": 7272, "isConstant": false, "isLValue": false, "isPure": false, @@ -536,7 +536,7 @@ }, "typeName": { "contractScope": null, - "id": 7349, + "id": 7271, "name": "DSProxyCache", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3788, @@ -547,7 +547,7 @@ } } }, - "id": 7351, + "id": 7273, "isConstant": false, "isLValue": false, "isPure": false, @@ -567,25 +567,25 @@ "typeString": "contract DSProxyCache" } }, - "id": 7353, + "id": 7275, "nodeType": "ExpressionStatement", "src": "418:26:30" }, { "expression": { "argumentTypes": null, - "id": 7358, + "id": 7280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 7354, + "id": 7276, "name": "dsGuardFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7345, + "referencedDeclaration": 7267, "src": "454:14:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuardFactory_$3195", @@ -599,7 +599,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 7356, + "id": 7278, "isConstant": false, "isLValue": false, "isPure": false, @@ -612,7 +612,7 @@ }, "typeName": { "contractScope": null, - "id": 7355, + "id": 7277, "name": "DSGuardFactory", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3195, @@ -623,7 +623,7 @@ } } }, - "id": 7357, + "id": 7279, "isConstant": false, "isLValue": false, "isPure": false, @@ -643,32 +643,32 @@ "typeString": "contract DSGuardFactory" } }, - "id": 7359, + "id": 7281, "nodeType": "ExpressionStatement", "src": "454:37:30" } ] }, "documentation": null, - "id": 7361, + "id": 7283, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 7346, + "id": 7268, "nodeType": "ParameterList", "parameters": [], "src": "398:2:30" }, "returnParameters": { - "id": 7347, + "id": 7269, "nodeType": "ParameterList", "parameters": [], "src": "408:0:30" }, - "scope": 7568, + "scope": 7490, "src": "387:111:30", "stateMutability": "nonpayable", "superFunction": null, @@ -676,25 +676,25 @@ }, { "body": { - "id": 7373, + "id": 7295, "nodeType": "Block", "src": "633:42:30", "statements": [ { "expression": { "argumentTypes": null, - "id": 7371, + "id": 7293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 7366, + "id": 7288, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7364, + "referencedDeclaration": 7286, "src": "643:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -710,18 +710,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7368, + "id": 7290, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "657:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7369, + "id": 7291, "isConstant": false, "isLValue": false, "isPure": false, @@ -743,21 +743,21 @@ "typeString": "address payable" } ], - "id": 7367, + "id": 7289, "name": "build", "nodeType": "Identifier", "overloadedDeclarations": [ - 7374, - 7456 + 7296, + 7378 ], - "referencedDeclaration": 7456, + "referencedDeclaration": 7378, "src": "651:5:30", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_payable_$", "typeString": "function (address) returns (address payable)" } }, - "id": 7370, + "id": 7292, "isConstant": false, "isLValue": false, "isPure": false, @@ -777,35 +777,35 @@ "typeString": "address payable" } }, - "id": 7372, + "id": 7294, "nodeType": "ExpressionStatement", "src": "643:25:30" } ] }, "documentation": null, - "id": 7374, + "id": 7296, "implemented": true, "kind": "function", "modifiers": [], "name": "build", "nodeType": "FunctionDefinition", "parameters": { - "id": 7362, + "id": 7284, "nodeType": "ParameterList", "parameters": [], "src": "591:2:30" }, "returnParameters": { - "id": 7365, + "id": 7287, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7364, + "id": 7286, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 7374, + "scope": 7296, "src": "610:21:30", "stateVariable": false, "storageLocation": "default", @@ -814,7 +814,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7363, + "id": 7285, "name": "address", "nodeType": "ElementaryTypeName", "src": "610:15:30", @@ -830,7 +830,7 @@ ], "src": "609:23:30" }, - "scope": 7568, + "scope": 7490, "src": "577:98:30", "stateMutability": "nonpayable", "superFunction": null, @@ -838,7 +838,7 @@ }, { "body": { - "id": 7455, + "id": 7377, "nodeType": "Block", "src": "841:578:30", "statements": [ @@ -849,7 +849,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7387, + "id": 7309, "isConstant": false, "isLValue": false, "isPure": false, @@ -858,25 +858,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7381, + "id": 7303, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "921:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7383, + "id": 7305, "indexExpression": { "argumentTypes": null, - "id": 7382, + "id": 7304, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "929:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -902,7 +902,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 7385, + "id": 7307, "isConstant": false, "isLValue": false, "isPure": true, @@ -925,7 +925,7 @@ "typeString": "int_const 0" } ], - "id": 7384, + "id": 7306, "isConstant": false, "isLValue": false, "isPure": true, @@ -938,7 +938,7 @@ }, "typeName": "address" }, - "id": 7386, + "id": 7308, "isConstant": false, "isLValue": false, "isPure": true, @@ -959,11 +959,11 @@ } }, "falseBody": null, - "id": 7397, + "id": 7319, "nodeType": "IfStatement", "src": "917:98:30", "trueBody": { - "id": 7396, + "id": 7318, "nodeType": "Block", "src": "951:64:30", "statements": [ @@ -978,25 +978,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7390, + "id": 7312, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "988:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7392, + "id": 7314, "indexExpression": { "argumentTypes": null, - "id": 7391, + "id": 7313, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "996:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1022,7 +1022,7 @@ "typeString": "address" } ], - "id": 7389, + "id": 7311, "isConstant": false, "isLValue": false, "isPure": true, @@ -1035,7 +1035,7 @@ }, "typeName": "uint160" }, - "id": 7393, + "id": 7315, "isConstant": false, "isLValue": false, "isPure": false, @@ -1057,7 +1057,7 @@ "typeString": "uint160" } ], - "id": 7388, + "id": 7310, "isConstant": false, "isLValue": false, "isPure": true, @@ -1070,7 +1070,7 @@ }, "typeName": "address" }, - "id": 7394, + "id": 7316, "isConstant": false, "isLValue": false, "isPure": false, @@ -1084,8 +1084,8 @@ "typeString": "address payable" } }, - "functionReturnParameters": 7380, - "id": 7395, + "functionReturnParameters": 7302, + "id": 7317, "nodeType": "Return", "src": "965:39:30" } @@ -1094,15 +1094,15 @@ }, { "assignments": [ - 7399 + 7321 ], "declarations": [ { "constant": false, - "id": 7399, + "id": 7321, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 7455, + "scope": 7377, "src": "1025:21:30", "stateVariable": false, "storageLocation": "default", @@ -1111,7 +1111,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7398, + "id": 7320, "name": "address", "nodeType": "ElementaryTypeName", "src": "1025:15:30", @@ -1125,7 +1125,7 @@ "visibility": "internal" } ], - "id": 7408, + "id": 7330, "initialValue": { "argumentTypes": null, "arguments": [ @@ -1137,11 +1137,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7404, + "id": 7326, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "1078:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -1156,7 +1156,7 @@ "typeString": "contract DSProxyCache" } ], - "id": 7403, + "id": 7325, "isConstant": false, "isLValue": false, "isPure": true, @@ -1169,7 +1169,7 @@ }, "typeName": "address" }, - "id": 7405, + "id": 7327, "isConstant": false, "isLValue": false, "isPure": false, @@ -1191,7 +1191,7 @@ "typeString": "address" } ], - "id": 7402, + "id": 7324, "isConstant": false, "isLValue": false, "isPure": false, @@ -1199,23 +1199,23 @@ "nodeType": "NewExpression", "src": "1057:12:30", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_DACProxy_$7244_$", "typeString": "function (address) returns (contract DACProxy)" }, "typeName": { "contractScope": null, - "id": 7401, + "id": 7323, "name": "DACProxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1061:8:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } } }, - "id": 7406, + "id": 7328, "isConstant": false, "isLValue": false, "isPure": false, @@ -1225,7 +1225,7 @@ "nodeType": "FunctionCall", "src": "1057:28:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } } @@ -1233,11 +1233,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } ], - "id": 7400, + "id": 7322, "isConstant": false, "isLValue": false, "isPure": true, @@ -1250,7 +1250,7 @@ }, "typeName": "address" }, - "id": 7407, + "id": 7329, "isConstant": false, "isLValue": false, "isPure": false, @@ -1275,18 +1275,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7410, + "id": 7332, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1109:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7411, + "id": 7333, "isConstant": false, "isLValue": false, "isPure": false, @@ -1302,11 +1302,11 @@ }, { "argumentTypes": null, - "id": 7412, + "id": 7334, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "1121:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1318,11 +1318,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7414, + "id": 7336, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1136:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1337,7 +1337,7 @@ "typeString": "address payable" } ], - "id": 7413, + "id": 7335, "isConstant": false, "isLValue": false, "isPure": true, @@ -1350,7 +1350,7 @@ }, "typeName": "address" }, - "id": 7415, + "id": 7337, "isConstant": false, "isLValue": false, "isPure": false, @@ -1369,11 +1369,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7417, + "id": 7339, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "1152:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -1388,7 +1388,7 @@ "typeString": "contract DSProxyCache" } ], - "id": 7416, + "id": 7338, "isConstant": false, "isLValue": false, "isPure": true, @@ -1401,7 +1401,7 @@ }, "typeName": "address" }, - "id": 7418, + "id": 7340, "isConstant": false, "isLValue": false, "isPure": false, @@ -1435,18 +1435,18 @@ "typeString": "address" } ], - "id": 7409, + "id": 7331, "name": "Created", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7337, + "referencedDeclaration": 7259, "src": "1101:7:30", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address,address,address)" } }, - "id": 7419, + "id": 7341, "isConstant": false, "isLValue": false, "isPure": false, @@ -1460,21 +1460,21 @@ "typeString": "tuple()" } }, - "id": 7420, + "id": 7342, "nodeType": "EmitStatement", "src": "1096:63:30" }, { "assignments": [ - 7422 + 7344 ], "declarations": [ { "constant": false, - "id": 7422, + "id": 7344, "name": "guard", "nodeType": "VariableDeclaration", - "scope": 7455, + "scope": 7377, "src": "1170:13:30", "stateVariable": false, "storageLocation": "default", @@ -1484,7 +1484,7 @@ }, "typeName": { "contractScope": null, - "id": 7421, + "id": 7343, "name": "DSGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3163, @@ -1498,7 +1498,7 @@ "visibility": "internal" } ], - "id": 7426, + "id": 7348, "initialValue": { "argumentTypes": null, "arguments": [], @@ -1506,18 +1506,18 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7423, + "id": 7345, "name": "dsGuardFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7345, + "referencedDeclaration": 7267, "src": "1186:14:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuardFactory_$3195", "typeString": "contract DSGuardFactory" } }, - "id": 7424, + "id": 7346, "isConstant": false, "isLValue": false, "isPure": false, @@ -1531,7 +1531,7 @@ "typeString": "function () external returns (contract DSGuard)" } }, - "id": 7425, + "id": 7347, "isConstant": false, "isLValue": false, "isPure": false, @@ -1554,11 +1554,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7430, + "id": 7352, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1236:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1575,18 +1575,18 @@ ], "expression": { "argumentTypes": null, - "id": 7427, + "id": 7349, "name": "guard", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7422, + "referencedDeclaration": 7344, "src": "1221:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 7429, + "id": 7351, "isConstant": false, "isLValue": false, "isPure": false, @@ -1600,7 +1600,7 @@ "typeString": "function (address) external" } }, - "id": 7431, + "id": 7353, "isConstant": false, "isLValue": false, "isPure": false, @@ -1614,7 +1614,7 @@ "typeString": "tuple()" } }, - "id": 7432, + "id": 7354, "nodeType": "ExpressionStatement", "src": "1221:21:30" }, @@ -1624,11 +1624,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7437, + "id": 7359, "name": "guard", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7422, + "referencedDeclaration": 7344, "src": "1309:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", @@ -1648,11 +1648,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7434, + "id": 7356, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1289:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1667,18 +1667,18 @@ "typeString": "address payable" } ], - "id": 7433, + "id": 7355, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1280:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7435, + "id": 7357, "isConstant": false, "isLValue": false, "isPure": false, @@ -1688,11 +1688,11 @@ "nodeType": "FunctionCall", "src": "1280:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7436, + "id": 7358, "isConstant": false, "isLValue": false, "isPure": false, @@ -1706,7 +1706,7 @@ "typeString": "function (contract DSAuthority) external" } }, - "id": 7438, + "id": 7360, "isConstant": false, "isLValue": false, "isPure": false, @@ -1720,7 +1720,7 @@ "typeString": "tuple()" } }, - "id": 7439, + "id": 7361, "nodeType": "ExpressionStatement", "src": "1280:35:30" }, @@ -1730,11 +1730,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7444, + "id": 7366, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "1350:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1754,11 +1754,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7441, + "id": 7363, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1334:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1773,18 +1773,18 @@ "typeString": "address payable" } ], - "id": 7440, + "id": 7362, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1325:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7442, + "id": 7364, "isConstant": false, "isLValue": false, "isPure": false, @@ -1794,11 +1794,11 @@ "nodeType": "FunctionCall", "src": "1325:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7443, + "id": 7365, "isConstant": false, "isLValue": false, "isPure": false, @@ -1812,7 +1812,7 @@ "typeString": "function (address) external" } }, - "id": 7445, + "id": 7367, "isConstant": false, "isLValue": false, "isPure": false, @@ -1826,14 +1826,14 @@ "typeString": "tuple()" } }, - "id": 7446, + "id": 7368, "nodeType": "ExpressionStatement", "src": "1325:31:30" }, { "expression": { "argumentTypes": null, - "id": 7451, + "id": 7373, "isConstant": false, "isLValue": false, "isPure": false, @@ -1842,25 +1842,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7447, + "id": 7369, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "1367:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7449, + "id": 7371, "indexExpression": { "argumentTypes": null, - "id": 7448, + "id": 7370, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "1375:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1882,11 +1882,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 7450, + "id": 7372, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1384:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1899,48 +1899,48 @@ "typeString": "address" } }, - "id": 7452, + "id": 7374, "nodeType": "ExpressionStatement", "src": "1367:22:30" }, { "expression": { "argumentTypes": null, - "id": 7453, + "id": 7375, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1407:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "functionReturnParameters": 7380, - "id": 7454, + "functionReturnParameters": 7302, + "id": 7376, "nodeType": "Return", "src": "1400:12:30" } ] }, "documentation": null, - "id": 7456, + "id": 7378, "implemented": true, "kind": "function", "modifiers": [], "name": "build", "nodeType": "FunctionDefinition", "parameters": { - "id": 7377, + "id": 7299, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7376, + "id": 7298, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 7456, + "scope": 7378, "src": "793:13:30", "stateVariable": false, "storageLocation": "default", @@ -1949,7 +1949,7 @@ "typeString": "address" }, "typeName": { - "id": 7375, + "id": 7297, "name": "address", "nodeType": "ElementaryTypeName", "src": "793:7:30", @@ -1966,15 +1966,15 @@ "src": "792:15:30" }, "returnParameters": { - "id": 7380, + "id": 7302, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7379, + "id": 7301, "name": "", "nodeType": "VariableDeclaration", - "scope": 7456, + "scope": 7378, "src": "824:15:30", "stateVariable": false, "storageLocation": "default", @@ -1983,7 +1983,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7378, + "id": 7300, "name": "address", "nodeType": "ElementaryTypeName", "src": "824:15:30", @@ -1999,7 +1999,7 @@ ], "src": "823:17:30" }, - "scope": 7568, + "scope": 7490, "src": "778:641:30", "stateMutability": "nonpayable", "superFunction": null, @@ -2007,7 +2007,7 @@ }, { "body": { - "id": 7472, + "id": 7394, "nodeType": "Block", "src": "1679:99:30", "statements": [ @@ -2019,18 +2019,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7466, + "id": 7388, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1717:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7467, + "id": 7389, "isConstant": false, "isLValue": false, "isPure": false, @@ -2046,11 +2046,11 @@ }, { "argumentTypes": null, - "id": 7468, + "id": 7390, "name": "dedgeCompoundManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7458, + "referencedDeclaration": 7380, "src": "1729:20:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2059,11 +2059,11 @@ }, { "argumentTypes": null, - "id": 7469, + "id": 7391, "name": "enterMarketCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7460, + "referencedDeclaration": 7382, "src": "1751:19:30", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -2086,21 +2086,21 @@ "typeString": "bytes memory" } ], - "id": 7465, + "id": 7387, "name": "buildAndEnterMarkets", "nodeType": "Identifier", "overloadedDeclarations": [ - 7473, - 7567 + 7395, + 7489 ], - "referencedDeclaration": 7567, + "referencedDeclaration": 7489, "src": "1696:20:30", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_payable_$", "typeString": "function (address,address,bytes memory) returns (address payable)" } }, - "id": 7470, + "id": 7392, "isConstant": false, "isLValue": false, "isPure": false, @@ -2114,30 +2114,30 @@ "typeString": "address payable" } }, - "functionReturnParameters": 7464, - "id": 7471, + "functionReturnParameters": 7386, + "id": 7393, "nodeType": "Return", "src": "1689:82:30" } ] }, "documentation": null, - "id": 7473, + "id": 7395, "implemented": true, "kind": "function", "modifiers": [], "name": "buildAndEnterMarkets", "nodeType": "FunctionDefinition", "parameters": { - "id": 7461, + "id": 7383, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7458, + "id": 7380, "name": "dedgeCompoundManager", "nodeType": "VariableDeclaration", - "scope": 7473, + "scope": 7395, "src": "1569:28:30", "stateVariable": false, "storageLocation": "default", @@ -2146,7 +2146,7 @@ "typeString": "address" }, "typeName": { - "id": 7457, + "id": 7379, "name": "address", "nodeType": "ElementaryTypeName", "src": "1569:7:30", @@ -2161,10 +2161,10 @@ }, { "constant": false, - "id": 7460, + "id": 7382, "name": "enterMarketCalldata", "nodeType": "VariableDeclaration", - "scope": 7473, + "scope": 7395, "src": "1607:32:30", "stateVariable": false, "storageLocation": "memory", @@ -2173,7 +2173,7 @@ "typeString": "bytes" }, "typeName": { - "id": 7459, + "id": 7381, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1607:5:30", @@ -2189,15 +2189,15 @@ "src": "1559:86:30" }, "returnParameters": { - "id": 7464, + "id": 7386, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7463, + "id": 7385, "name": "", "nodeType": "VariableDeclaration", - "scope": 7473, + "scope": 7395, "src": "1662:15:30", "stateVariable": false, "storageLocation": "default", @@ -2206,7 +2206,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7462, + "id": 7384, "name": "address", "nodeType": "ElementaryTypeName", "src": "1662:15:30", @@ -2222,7 +2222,7 @@ ], "src": "1661:17:30" }, - "scope": 7568, + "scope": 7490, "src": "1530:248:30", "stateMutability": "nonpayable", "superFunction": null, @@ -2230,7 +2230,7 @@ }, { "body": { - "id": 7566, + "id": 7488, "nodeType": "Block", "src": "1956:724:30", "statements": [ @@ -2241,7 +2241,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7490, + "id": 7412, "isConstant": false, "isLValue": false, "isPure": false, @@ -2250,25 +2250,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7484, + "id": 7406, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "2036:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7486, + "id": 7408, "indexExpression": { "argumentTypes": null, - "id": 7485, + "id": 7407, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2044:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2294,7 +2294,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 7488, + "id": 7410, "isConstant": false, "isLValue": false, "isPure": true, @@ -2317,7 +2317,7 @@ "typeString": "int_const 0" } ], - "id": 7487, + "id": 7409, "isConstant": false, "isLValue": false, "isPure": true, @@ -2330,7 +2330,7 @@ }, "typeName": "address" }, - "id": 7489, + "id": 7411, "isConstant": false, "isLValue": false, "isPure": true, @@ -2351,11 +2351,11 @@ } }, "falseBody": null, - "id": 7500, + "id": 7422, "nodeType": "IfStatement", "src": "2032:98:30", "trueBody": { - "id": 7499, + "id": 7421, "nodeType": "Block", "src": "2066:64:30", "statements": [ @@ -2370,25 +2370,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7493, + "id": 7415, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "2103:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7495, + "id": 7417, "indexExpression": { "argumentTypes": null, - "id": 7494, + "id": 7416, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2111:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2414,7 +2414,7 @@ "typeString": "address" } ], - "id": 7492, + "id": 7414, "isConstant": false, "isLValue": false, "isPure": true, @@ -2427,7 +2427,7 @@ }, "typeName": "uint160" }, - "id": 7496, + "id": 7418, "isConstant": false, "isLValue": false, "isPure": false, @@ -2449,7 +2449,7 @@ "typeString": "uint160" } ], - "id": 7491, + "id": 7413, "isConstant": false, "isLValue": false, "isPure": true, @@ -2462,7 +2462,7 @@ }, "typeName": "address" }, - "id": 7497, + "id": 7419, "isConstant": false, "isLValue": false, "isPure": false, @@ -2476,8 +2476,8 @@ "typeString": "address payable" } }, - "functionReturnParameters": 7483, - "id": 7498, + "functionReturnParameters": 7405, + "id": 7420, "nodeType": "Return", "src": "2080:39:30" } @@ -2486,15 +2486,15 @@ }, { "assignments": [ - 7502 + 7424 ], "declarations": [ { "constant": false, - "id": 7502, + "id": 7424, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 7566, + "scope": 7488, "src": "2140:21:30", "stateVariable": false, "storageLocation": "default", @@ -2503,7 +2503,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7501, + "id": 7423, "name": "address", "nodeType": "ElementaryTypeName", "src": "2140:15:30", @@ -2517,7 +2517,7 @@ "visibility": "internal" } ], - "id": 7511, + "id": 7433, "initialValue": { "argumentTypes": null, "arguments": [ @@ -2529,11 +2529,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7507, + "id": 7429, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "2193:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -2548,7 +2548,7 @@ "typeString": "contract DSProxyCache" } ], - "id": 7506, + "id": 7428, "isConstant": false, "isLValue": false, "isPure": true, @@ -2561,7 +2561,7 @@ }, "typeName": "address" }, - "id": 7508, + "id": 7430, "isConstant": false, "isLValue": false, "isPure": false, @@ -2583,7 +2583,7 @@ "typeString": "address" } ], - "id": 7505, + "id": 7427, "isConstant": false, "isLValue": false, "isPure": false, @@ -2591,23 +2591,23 @@ "nodeType": "NewExpression", "src": "2172:12:30", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_DACProxy_$7244_$", "typeString": "function (address) returns (contract DACProxy)" }, "typeName": { "contractScope": null, - "id": 7504, + "id": 7426, "name": "DACProxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "2176:8:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } } }, - "id": 7509, + "id": 7431, "isConstant": false, "isLValue": false, "isPure": false, @@ -2617,7 +2617,7 @@ "nodeType": "FunctionCall", "src": "2172:28:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } } @@ -2625,11 +2625,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } ], - "id": 7503, + "id": 7425, "isConstant": false, "isLValue": false, "isPure": true, @@ -2642,7 +2642,7 @@ }, "typeName": "address" }, - "id": 7510, + "id": 7432, "isConstant": false, "isLValue": false, "isPure": false, @@ -2667,18 +2667,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7513, + "id": 7435, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "2224:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7514, + "id": 7436, "isConstant": false, "isLValue": false, "isPure": false, @@ -2694,11 +2694,11 @@ }, { "argumentTypes": null, - "id": 7515, + "id": 7437, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2236:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2710,11 +2710,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7517, + "id": 7439, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2251:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2729,7 +2729,7 @@ "typeString": "address payable" } ], - "id": 7516, + "id": 7438, "isConstant": false, "isLValue": false, "isPure": true, @@ -2742,7 +2742,7 @@ }, "typeName": "address" }, - "id": 7518, + "id": 7440, "isConstant": false, "isLValue": false, "isPure": false, @@ -2761,11 +2761,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7520, + "id": 7442, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "2267:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -2780,7 +2780,7 @@ "typeString": "contract DSProxyCache" } ], - "id": 7519, + "id": 7441, "isConstant": false, "isLValue": false, "isPure": true, @@ -2793,7 +2793,7 @@ }, "typeName": "address" }, - "id": 7521, + "id": 7443, "isConstant": false, "isLValue": false, "isPure": false, @@ -2827,18 +2827,18 @@ "typeString": "address" } ], - "id": 7512, + "id": 7434, "name": "Created", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7337, + "referencedDeclaration": 7259, "src": "2216:7:30", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address,address,address)" } }, - "id": 7522, + "id": 7444, "isConstant": false, "isLValue": false, "isPure": false, @@ -2852,21 +2852,21 @@ "typeString": "tuple()" } }, - "id": 7523, + "id": 7445, "nodeType": "EmitStatement", "src": "2211:63:30" }, { "assignments": [ - 7525 + 7447 ], "declarations": [ { "constant": false, - "id": 7525, + "id": 7447, "name": "guard", "nodeType": "VariableDeclaration", - "scope": 7566, + "scope": 7488, "src": "2285:13:30", "stateVariable": false, "storageLocation": "default", @@ -2876,7 +2876,7 @@ }, "typeName": { "contractScope": null, - "id": 7524, + "id": 7446, "name": "DSGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3163, @@ -2890,7 +2890,7 @@ "visibility": "internal" } ], - "id": 7529, + "id": 7451, "initialValue": { "argumentTypes": null, "arguments": [], @@ -2898,18 +2898,18 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7526, + "id": 7448, "name": "dsGuardFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7345, + "referencedDeclaration": 7267, "src": "2301:14:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuardFactory_$3195", "typeString": "contract DSGuardFactory" } }, - "id": 7527, + "id": 7449, "isConstant": false, "isLValue": false, "isPure": false, @@ -2923,7 +2923,7 @@ "typeString": "function () external returns (contract DSGuard)" } }, - "id": 7528, + "id": 7450, "isConstant": false, "isLValue": false, "isPure": false, @@ -2946,11 +2946,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7533, + "id": 7455, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2351:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2967,18 +2967,18 @@ ], "expression": { "argumentTypes": null, - "id": 7530, + "id": 7452, "name": "guard", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7525, + "referencedDeclaration": 7447, "src": "2336:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 7532, + "id": 7454, "isConstant": false, "isLValue": false, "isPure": false, @@ -2992,7 +2992,7 @@ "typeString": "function (address) external" } }, - "id": 7534, + "id": 7456, "isConstant": false, "isLValue": false, "isPure": false, @@ -3006,7 +3006,7 @@ "typeString": "tuple()" } }, - "id": 7535, + "id": 7457, "nodeType": "ExpressionStatement", "src": "2336:21:30" }, @@ -3016,11 +3016,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7540, + "id": 7462, "name": "dedgeCompoundManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7477, + "referencedDeclaration": 7399, "src": "2467:20:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3029,11 +3029,11 @@ }, { "argumentTypes": null, - "id": 7541, + "id": 7463, "name": "enterMarketCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7479, + "referencedDeclaration": 7401, "src": "2501:19:30", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -3057,11 +3057,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7537, + "id": 7459, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2439:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3076,18 +3076,18 @@ "typeString": "address payable" } ], - "id": 7536, + "id": 7458, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "2430:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7538, + "id": 7460, "isConstant": false, "isLValue": false, "isPure": false, @@ -3097,11 +3097,11 @@ "nodeType": "FunctionCall", "src": "2430:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7539, + "id": 7461, "isConstant": false, "isLValue": false, "isPure": false, @@ -3115,7 +3115,7 @@ "typeString": "function (address,bytes memory) payable external returns (bytes memory)" } }, - "id": 7542, + "id": 7464, "isConstant": false, "isLValue": false, "isPure": false, @@ -3129,7 +3129,7 @@ "typeString": "bytes memory" } }, - "id": 7543, + "id": 7465, "nodeType": "ExpressionStatement", "src": "2430:100:30" }, @@ -3139,11 +3139,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7548, + "id": 7470, "name": "guard", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7525, + "referencedDeclaration": 7447, "src": "2570:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", @@ -3163,11 +3163,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7545, + "id": 7467, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2550:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3182,18 +3182,18 @@ "typeString": "address payable" } ], - "id": 7544, + "id": 7466, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "2541:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7546, + "id": 7468, "isConstant": false, "isLValue": false, "isPure": false, @@ -3203,11 +3203,11 @@ "nodeType": "FunctionCall", "src": "2541:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7547, + "id": 7469, "isConstant": false, "isLValue": false, "isPure": false, @@ -3221,7 +3221,7 @@ "typeString": "function (contract DSAuthority) external" } }, - "id": 7549, + "id": 7471, "isConstant": false, "isLValue": false, "isPure": false, @@ -3235,7 +3235,7 @@ "typeString": "tuple()" } }, - "id": 7550, + "id": 7472, "nodeType": "ExpressionStatement", "src": "2541:35:30" }, @@ -3245,11 +3245,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7555, + "id": 7477, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2611:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3269,11 +3269,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7552, + "id": 7474, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2595:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3288,18 +3288,18 @@ "typeString": "address payable" } ], - "id": 7551, + "id": 7473, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "2586:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7553, + "id": 7475, "isConstant": false, "isLValue": false, "isPure": false, @@ -3309,11 +3309,11 @@ "nodeType": "FunctionCall", "src": "2586:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7554, + "id": 7476, "isConstant": false, "isLValue": false, "isPure": false, @@ -3327,7 +3327,7 @@ "typeString": "function (address) external" } }, - "id": 7556, + "id": 7478, "isConstant": false, "isLValue": false, "isPure": false, @@ -3341,14 +3341,14 @@ "typeString": "tuple()" } }, - "id": 7557, + "id": 7479, "nodeType": "ExpressionStatement", "src": "2586:31:30" }, { "expression": { "argumentTypes": null, - "id": 7562, + "id": 7484, "isConstant": false, "isLValue": false, "isPure": false, @@ -3357,25 +3357,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7558, + "id": 7480, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "2628:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7560, + "id": 7482, "indexExpression": { "argumentTypes": null, - "id": 7559, + "id": 7481, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2636:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3397,11 +3397,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 7561, + "id": 7483, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2645:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3414,48 +3414,48 @@ "typeString": "address" } }, - "id": 7563, + "id": 7485, "nodeType": "ExpressionStatement", "src": "2628:22:30" }, { "expression": { "argumentTypes": null, - "id": 7564, + "id": 7486, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2668:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "functionReturnParameters": 7483, - "id": 7565, + "functionReturnParameters": 7405, + "id": 7487, "nodeType": "Return", "src": "2661:12:30" } ] }, "documentation": null, - "id": 7567, + "id": 7489, "implemented": true, "kind": "function", "modifiers": [], "name": "buildAndEnterMarkets", "nodeType": "FunctionDefinition", "parameters": { - "id": 7480, + "id": 7402, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7475, + "id": 7397, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 7567, + "scope": 7489, "src": "1823:13:30", "stateVariable": false, "storageLocation": "default", @@ -3464,7 +3464,7 @@ "typeString": "address" }, "typeName": { - "id": 7474, + "id": 7396, "name": "address", "nodeType": "ElementaryTypeName", "src": "1823:7:30", @@ -3479,10 +3479,10 @@ }, { "constant": false, - "id": 7477, + "id": 7399, "name": "dedgeCompoundManager", "nodeType": "VariableDeclaration", - "scope": 7567, + "scope": 7489, "src": "1846:28:30", "stateVariable": false, "storageLocation": "default", @@ -3491,7 +3491,7 @@ "typeString": "address" }, "typeName": { - "id": 7476, + "id": 7398, "name": "address", "nodeType": "ElementaryTypeName", "src": "1846:7:30", @@ -3506,10 +3506,10 @@ }, { "constant": false, - "id": 7479, + "id": 7401, "name": "enterMarketCalldata", "nodeType": "VariableDeclaration", - "scope": 7567, + "scope": 7489, "src": "1884:32:30", "stateVariable": false, "storageLocation": "memory", @@ -3518,7 +3518,7 @@ "typeString": "bytes" }, "typeName": { - "id": 7478, + "id": 7400, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1884:5:30", @@ -3534,15 +3534,15 @@ "src": "1813:109:30" }, "returnParameters": { - "id": 7483, + "id": 7405, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7482, + "id": 7404, "name": "", "nodeType": "VariableDeclaration", - "scope": 7567, + "scope": 7489, "src": "1939:15:30", "stateVariable": false, "storageLocation": "default", @@ -3551,7 +3551,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7481, + "id": 7403, "name": "address", "nodeType": "ElementaryTypeName", "src": "1939:15:30", @@ -3567,14 +3567,14 @@ ], "src": "1938:17:30" }, - "scope": 7568, + "scope": 7490, "src": "1784:896:30", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 7569, + "scope": 7491, "src": "138:2544:30" } ], @@ -3584,14 +3584,14 @@ "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol", "exportedSymbols": { "DACProxyFactory": [ - 7568 + 7490 ] }, - "id": 7569, + "id": 7491, "nodeType": "SourceUnit", "nodes": [ { - "id": 7324, + "id": 7246, "literals": [ "solidity", "0.5", @@ -3603,10 +3603,10 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", "file": "./DACProxy.sol", - "id": 7325, + "id": 7247, "nodeType": "ImportDirective", - "scope": 7569, - "sourceUnit": 7323, + "scope": 7491, + "sourceUnit": 7245, "src": "25:24:30", "symbolAliases": [], "unitAlias": "" @@ -3614,9 +3614,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol", "file": "../lib/dapphub/Guard.sol", - "id": 7326, + "id": 7248, "nodeType": "ImportDirective", - "scope": 7569, + "scope": 7491, "sourceUnit": 3196, "src": "51:34:30", "symbolAliases": [], @@ -3625,9 +3625,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol", "file": "../interfaces/compound/IComptroller.sol", - "id": 7327, + "id": 7249, "nodeType": "ImportDirective", - "scope": 7569, + "scope": 7491, "sourceUnit": 1097, "src": "87:49:30", "symbolAliases": [], @@ -3638,14 +3638,14 @@ "contractDependencies": [ 3195, 3788, - 7322 + 7244 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 7568, + "id": 7490, "linearizedBaseContracts": [ - 7568 + 7490 ], "name": "DACProxyFactory", "nodeType": "ContractDefinition", @@ -3653,20 +3653,20 @@ { "anonymous": false, "documentation": null, - "id": 7337, + "id": 7259, "name": "Created", "nodeType": "EventDefinition", "parameters": { - "id": 7336, + "id": 7258, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7329, + "id": 7251, "indexed": true, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 7337, + "scope": 7259, "src": "183:22:30", "stateVariable": false, "storageLocation": "default", @@ -3675,7 +3675,7 @@ "typeString": "address" }, "typeName": { - "id": 7328, + "id": 7250, "name": "address", "nodeType": "ElementaryTypeName", "src": "183:7:30", @@ -3690,11 +3690,11 @@ }, { "constant": false, - "id": 7331, + "id": 7253, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 7337, + "scope": 7259, "src": "207:21:30", "stateVariable": false, "storageLocation": "default", @@ -3703,7 +3703,7 @@ "typeString": "address" }, "typeName": { - "id": 7330, + "id": 7252, "name": "address", "nodeType": "ElementaryTypeName", "src": "207:7:30", @@ -3718,11 +3718,11 @@ }, { "constant": false, - "id": 7333, + "id": 7255, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 7337, + "scope": 7259, "src": "230:13:30", "stateVariable": false, "storageLocation": "default", @@ -3731,7 +3731,7 @@ "typeString": "address" }, "typeName": { - "id": 7332, + "id": 7254, "name": "address", "nodeType": "ElementaryTypeName", "src": "230:7:30", @@ -3746,11 +3746,11 @@ }, { "constant": false, - "id": 7335, + "id": 7257, "indexed": false, "name": "cache", "nodeType": "VariableDeclaration", - "scope": 7337, + "scope": 7259, "src": "245:13:30", "stateVariable": false, "storageLocation": "default", @@ -3759,7 +3759,7 @@ "typeString": "address" }, "typeName": { - "id": 7334, + "id": 7256, "name": "address", "nodeType": "ElementaryTypeName", "src": "245:7:30", @@ -3779,10 +3779,10 @@ }, { "constant": false, - "id": 7341, + "id": 7263, "name": "proxies", "nodeType": "VariableDeclaration", - "scope": 7568, + "scope": 7490, "src": "266:40:30", "stateVariable": true, "storageLocation": "default", @@ -3791,9 +3791,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 7340, + "id": 7262, "keyType": { - "id": 7338, + "id": 7260, "name": "address", "nodeType": "ElementaryTypeName", "src": "274:7:30", @@ -3809,7 +3809,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 7339, + "id": 7261, "name": "address", "nodeType": "ElementaryTypeName", "src": "283:7:30", @@ -3825,10 +3825,10 @@ }, { "constant": false, - "id": 7343, + "id": 7265, "name": "cache", "nodeType": "VariableDeclaration", - "scope": 7568, + "scope": 7490, "src": "313:25:30", "stateVariable": true, "storageLocation": "default", @@ -3838,7 +3838,7 @@ }, "typeName": { "contractScope": null, - "id": 7342, + "id": 7264, "name": "DSProxyCache", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3788, @@ -3853,10 +3853,10 @@ }, { "constant": false, - "id": 7345, + "id": 7267, "name": "dsGuardFactory", "nodeType": "VariableDeclaration", - "scope": 7568, + "scope": 7490, "src": "344:36:30", "stateVariable": true, "storageLocation": "default", @@ -3866,7 +3866,7 @@ }, "typeName": { "contractScope": null, - "id": 7344, + "id": 7266, "name": "DSGuardFactory", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3195, @@ -3881,25 +3881,25 @@ }, { "body": { - "id": 7360, + "id": 7282, "nodeType": "Block", "src": "408:90:30", "statements": [ { "expression": { "argumentTypes": null, - "id": 7352, + "id": 7274, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 7348, + "id": 7270, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "418:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -3913,7 +3913,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 7350, + "id": 7272, "isConstant": false, "isLValue": false, "isPure": false, @@ -3926,7 +3926,7 @@ }, "typeName": { "contractScope": null, - "id": 7349, + "id": 7271, "name": "DSProxyCache", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3788, @@ -3937,7 +3937,7 @@ } } }, - "id": 7351, + "id": 7273, "isConstant": false, "isLValue": false, "isPure": false, @@ -3957,25 +3957,25 @@ "typeString": "contract DSProxyCache" } }, - "id": 7353, + "id": 7275, "nodeType": "ExpressionStatement", "src": "418:26:30" }, { "expression": { "argumentTypes": null, - "id": 7358, + "id": 7280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 7354, + "id": 7276, "name": "dsGuardFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7345, + "referencedDeclaration": 7267, "src": "454:14:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuardFactory_$3195", @@ -3989,7 +3989,7 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 7356, + "id": 7278, "isConstant": false, "isLValue": false, "isPure": false, @@ -4002,7 +4002,7 @@ }, "typeName": { "contractScope": null, - "id": 7355, + "id": 7277, "name": "DSGuardFactory", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3195, @@ -4013,7 +4013,7 @@ } } }, - "id": 7357, + "id": 7279, "isConstant": false, "isLValue": false, "isPure": false, @@ -4033,32 +4033,32 @@ "typeString": "contract DSGuardFactory" } }, - "id": 7359, + "id": 7281, "nodeType": "ExpressionStatement", "src": "454:37:30" } ] }, "documentation": null, - "id": 7361, + "id": 7283, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 7346, + "id": 7268, "nodeType": "ParameterList", "parameters": [], "src": "398:2:30" }, "returnParameters": { - "id": 7347, + "id": 7269, "nodeType": "ParameterList", "parameters": [], "src": "408:0:30" }, - "scope": 7568, + "scope": 7490, "src": "387:111:30", "stateMutability": "nonpayable", "superFunction": null, @@ -4066,25 +4066,25 @@ }, { "body": { - "id": 7373, + "id": 7295, "nodeType": "Block", "src": "633:42:30", "statements": [ { "expression": { "argumentTypes": null, - "id": 7371, + "id": 7293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 7366, + "id": 7288, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7364, + "referencedDeclaration": 7286, "src": "643:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4100,18 +4100,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7368, + "id": 7290, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "657:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7369, + "id": 7291, "isConstant": false, "isLValue": false, "isPure": false, @@ -4133,21 +4133,21 @@ "typeString": "address payable" } ], - "id": 7367, + "id": 7289, "name": "build", "nodeType": "Identifier", "overloadedDeclarations": [ - 7374, - 7456 + 7296, + 7378 ], - "referencedDeclaration": 7456, + "referencedDeclaration": 7378, "src": "651:5:30", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_payable_$", "typeString": "function (address) returns (address payable)" } }, - "id": 7370, + "id": 7292, "isConstant": false, "isLValue": false, "isPure": false, @@ -4167,35 +4167,35 @@ "typeString": "address payable" } }, - "id": 7372, + "id": 7294, "nodeType": "ExpressionStatement", "src": "643:25:30" } ] }, "documentation": null, - "id": 7374, + "id": 7296, "implemented": true, "kind": "function", "modifiers": [], "name": "build", "nodeType": "FunctionDefinition", "parameters": { - "id": 7362, + "id": 7284, "nodeType": "ParameterList", "parameters": [], "src": "591:2:30" }, "returnParameters": { - "id": 7365, + "id": 7287, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7364, + "id": 7286, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 7374, + "scope": 7296, "src": "610:21:30", "stateVariable": false, "storageLocation": "default", @@ -4204,7 +4204,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7363, + "id": 7285, "name": "address", "nodeType": "ElementaryTypeName", "src": "610:15:30", @@ -4220,7 +4220,7 @@ ], "src": "609:23:30" }, - "scope": 7568, + "scope": 7490, "src": "577:98:30", "stateMutability": "nonpayable", "superFunction": null, @@ -4228,7 +4228,7 @@ }, { "body": { - "id": 7455, + "id": 7377, "nodeType": "Block", "src": "841:578:30", "statements": [ @@ -4239,7 +4239,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7387, + "id": 7309, "isConstant": false, "isLValue": false, "isPure": false, @@ -4248,25 +4248,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7381, + "id": 7303, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "921:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7383, + "id": 7305, "indexExpression": { "argumentTypes": null, - "id": 7382, + "id": 7304, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "929:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4292,7 +4292,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 7385, + "id": 7307, "isConstant": false, "isLValue": false, "isPure": true, @@ -4315,7 +4315,7 @@ "typeString": "int_const 0" } ], - "id": 7384, + "id": 7306, "isConstant": false, "isLValue": false, "isPure": true, @@ -4328,7 +4328,7 @@ }, "typeName": "address" }, - "id": 7386, + "id": 7308, "isConstant": false, "isLValue": false, "isPure": true, @@ -4349,11 +4349,11 @@ } }, "falseBody": null, - "id": 7397, + "id": 7319, "nodeType": "IfStatement", "src": "917:98:30", "trueBody": { - "id": 7396, + "id": 7318, "nodeType": "Block", "src": "951:64:30", "statements": [ @@ -4368,25 +4368,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7390, + "id": 7312, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "988:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7392, + "id": 7314, "indexExpression": { "argumentTypes": null, - "id": 7391, + "id": 7313, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "996:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4412,7 +4412,7 @@ "typeString": "address" } ], - "id": 7389, + "id": 7311, "isConstant": false, "isLValue": false, "isPure": true, @@ -4425,7 +4425,7 @@ }, "typeName": "uint160" }, - "id": 7393, + "id": 7315, "isConstant": false, "isLValue": false, "isPure": false, @@ -4447,7 +4447,7 @@ "typeString": "uint160" } ], - "id": 7388, + "id": 7310, "isConstant": false, "isLValue": false, "isPure": true, @@ -4460,7 +4460,7 @@ }, "typeName": "address" }, - "id": 7394, + "id": 7316, "isConstant": false, "isLValue": false, "isPure": false, @@ -4474,8 +4474,8 @@ "typeString": "address payable" } }, - "functionReturnParameters": 7380, - "id": 7395, + "functionReturnParameters": 7302, + "id": 7317, "nodeType": "Return", "src": "965:39:30" } @@ -4484,15 +4484,15 @@ }, { "assignments": [ - 7399 + 7321 ], "declarations": [ { "constant": false, - "id": 7399, + "id": 7321, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 7455, + "scope": 7377, "src": "1025:21:30", "stateVariable": false, "storageLocation": "default", @@ -4501,7 +4501,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7398, + "id": 7320, "name": "address", "nodeType": "ElementaryTypeName", "src": "1025:15:30", @@ -4515,7 +4515,7 @@ "visibility": "internal" } ], - "id": 7408, + "id": 7330, "initialValue": { "argumentTypes": null, "arguments": [ @@ -4527,11 +4527,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7404, + "id": 7326, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "1078:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -4546,7 +4546,7 @@ "typeString": "contract DSProxyCache" } ], - "id": 7403, + "id": 7325, "isConstant": false, "isLValue": false, "isPure": true, @@ -4559,7 +4559,7 @@ }, "typeName": "address" }, - "id": 7405, + "id": 7327, "isConstant": false, "isLValue": false, "isPure": false, @@ -4581,7 +4581,7 @@ "typeString": "address" } ], - "id": 7402, + "id": 7324, "isConstant": false, "isLValue": false, "isPure": false, @@ -4589,23 +4589,23 @@ "nodeType": "NewExpression", "src": "1057:12:30", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_DACProxy_$7244_$", "typeString": "function (address) returns (contract DACProxy)" }, "typeName": { "contractScope": null, - "id": 7401, + "id": 7323, "name": "DACProxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1061:8:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } } }, - "id": 7406, + "id": 7328, "isConstant": false, "isLValue": false, "isPure": false, @@ -4615,7 +4615,7 @@ "nodeType": "FunctionCall", "src": "1057:28:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } } @@ -4623,11 +4623,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } ], - "id": 7400, + "id": 7322, "isConstant": false, "isLValue": false, "isPure": true, @@ -4640,7 +4640,7 @@ }, "typeName": "address" }, - "id": 7407, + "id": 7329, "isConstant": false, "isLValue": false, "isPure": false, @@ -4665,18 +4665,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7410, + "id": 7332, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1109:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7411, + "id": 7333, "isConstant": false, "isLValue": false, "isPure": false, @@ -4692,11 +4692,11 @@ }, { "argumentTypes": null, - "id": 7412, + "id": 7334, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "1121:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4708,11 +4708,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7414, + "id": 7336, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1136:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4727,7 +4727,7 @@ "typeString": "address payable" } ], - "id": 7413, + "id": 7335, "isConstant": false, "isLValue": false, "isPure": true, @@ -4740,7 +4740,7 @@ }, "typeName": "address" }, - "id": 7415, + "id": 7337, "isConstant": false, "isLValue": false, "isPure": false, @@ -4759,11 +4759,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7417, + "id": 7339, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "1152:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -4778,7 +4778,7 @@ "typeString": "contract DSProxyCache" } ], - "id": 7416, + "id": 7338, "isConstant": false, "isLValue": false, "isPure": true, @@ -4791,7 +4791,7 @@ }, "typeName": "address" }, - "id": 7418, + "id": 7340, "isConstant": false, "isLValue": false, "isPure": false, @@ -4825,18 +4825,18 @@ "typeString": "address" } ], - "id": 7409, + "id": 7331, "name": "Created", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7337, + "referencedDeclaration": 7259, "src": "1101:7:30", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address,address,address)" } }, - "id": 7419, + "id": 7341, "isConstant": false, "isLValue": false, "isPure": false, @@ -4850,21 +4850,21 @@ "typeString": "tuple()" } }, - "id": 7420, + "id": 7342, "nodeType": "EmitStatement", "src": "1096:63:30" }, { "assignments": [ - 7422 + 7344 ], "declarations": [ { "constant": false, - "id": 7422, + "id": 7344, "name": "guard", "nodeType": "VariableDeclaration", - "scope": 7455, + "scope": 7377, "src": "1170:13:30", "stateVariable": false, "storageLocation": "default", @@ -4874,7 +4874,7 @@ }, "typeName": { "contractScope": null, - "id": 7421, + "id": 7343, "name": "DSGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3163, @@ -4888,7 +4888,7 @@ "visibility": "internal" } ], - "id": 7426, + "id": 7348, "initialValue": { "argumentTypes": null, "arguments": [], @@ -4896,18 +4896,18 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7423, + "id": 7345, "name": "dsGuardFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7345, + "referencedDeclaration": 7267, "src": "1186:14:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuardFactory_$3195", "typeString": "contract DSGuardFactory" } }, - "id": 7424, + "id": 7346, "isConstant": false, "isLValue": false, "isPure": false, @@ -4921,7 +4921,7 @@ "typeString": "function () external returns (contract DSGuard)" } }, - "id": 7425, + "id": 7347, "isConstant": false, "isLValue": false, "isPure": false, @@ -4944,11 +4944,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7430, + "id": 7352, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1236:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -4965,18 +4965,18 @@ ], "expression": { "argumentTypes": null, - "id": 7427, + "id": 7349, "name": "guard", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7422, + "referencedDeclaration": 7344, "src": "1221:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 7429, + "id": 7351, "isConstant": false, "isLValue": false, "isPure": false, @@ -4990,7 +4990,7 @@ "typeString": "function (address) external" } }, - "id": 7431, + "id": 7353, "isConstant": false, "isLValue": false, "isPure": false, @@ -5004,7 +5004,7 @@ "typeString": "tuple()" } }, - "id": 7432, + "id": 7354, "nodeType": "ExpressionStatement", "src": "1221:21:30" }, @@ -5014,11 +5014,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7437, + "id": 7359, "name": "guard", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7422, + "referencedDeclaration": 7344, "src": "1309:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", @@ -5038,11 +5038,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7434, + "id": 7356, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1289:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -5057,18 +5057,18 @@ "typeString": "address payable" } ], - "id": 7433, + "id": 7355, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1280:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7435, + "id": 7357, "isConstant": false, "isLValue": false, "isPure": false, @@ -5078,11 +5078,11 @@ "nodeType": "FunctionCall", "src": "1280:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7436, + "id": 7358, "isConstant": false, "isLValue": false, "isPure": false, @@ -5096,7 +5096,7 @@ "typeString": "function (contract DSAuthority) external" } }, - "id": 7438, + "id": 7360, "isConstant": false, "isLValue": false, "isPure": false, @@ -5110,7 +5110,7 @@ "typeString": "tuple()" } }, - "id": 7439, + "id": 7361, "nodeType": "ExpressionStatement", "src": "1280:35:30" }, @@ -5120,11 +5120,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7444, + "id": 7366, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "1350:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5144,11 +5144,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7441, + "id": 7363, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1334:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -5163,18 +5163,18 @@ "typeString": "address payable" } ], - "id": 7440, + "id": 7362, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1325:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7442, + "id": 7364, "isConstant": false, "isLValue": false, "isPure": false, @@ -5184,11 +5184,11 @@ "nodeType": "FunctionCall", "src": "1325:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7443, + "id": 7365, "isConstant": false, "isLValue": false, "isPure": false, @@ -5202,7 +5202,7 @@ "typeString": "function (address) external" } }, - "id": 7445, + "id": 7367, "isConstant": false, "isLValue": false, "isPure": false, @@ -5216,14 +5216,14 @@ "typeString": "tuple()" } }, - "id": 7446, + "id": 7368, "nodeType": "ExpressionStatement", "src": "1325:31:30" }, { "expression": { "argumentTypes": null, - "id": 7451, + "id": 7373, "isConstant": false, "isLValue": false, "isPure": false, @@ -5232,25 +5232,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7447, + "id": 7369, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "1367:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7449, + "id": 7371, "indexExpression": { "argumentTypes": null, - "id": 7448, + "id": 7370, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7376, + "referencedDeclaration": 7298, "src": "1375:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5272,11 +5272,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 7450, + "id": 7372, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1384:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -5289,48 +5289,48 @@ "typeString": "address" } }, - "id": 7452, + "id": 7374, "nodeType": "ExpressionStatement", "src": "1367:22:30" }, { "expression": { "argumentTypes": null, - "id": 7453, + "id": 7375, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7399, + "referencedDeclaration": 7321, "src": "1407:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "functionReturnParameters": 7380, - "id": 7454, + "functionReturnParameters": 7302, + "id": 7376, "nodeType": "Return", "src": "1400:12:30" } ] }, "documentation": null, - "id": 7456, + "id": 7378, "implemented": true, "kind": "function", "modifiers": [], "name": "build", "nodeType": "FunctionDefinition", "parameters": { - "id": 7377, + "id": 7299, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7376, + "id": 7298, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 7456, + "scope": 7378, "src": "793:13:30", "stateVariable": false, "storageLocation": "default", @@ -5339,7 +5339,7 @@ "typeString": "address" }, "typeName": { - "id": 7375, + "id": 7297, "name": "address", "nodeType": "ElementaryTypeName", "src": "793:7:30", @@ -5356,15 +5356,15 @@ "src": "792:15:30" }, "returnParameters": { - "id": 7380, + "id": 7302, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7379, + "id": 7301, "name": "", "nodeType": "VariableDeclaration", - "scope": 7456, + "scope": 7378, "src": "824:15:30", "stateVariable": false, "storageLocation": "default", @@ -5373,7 +5373,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7378, + "id": 7300, "name": "address", "nodeType": "ElementaryTypeName", "src": "824:15:30", @@ -5389,7 +5389,7 @@ ], "src": "823:17:30" }, - "scope": 7568, + "scope": 7490, "src": "778:641:30", "stateMutability": "nonpayable", "superFunction": null, @@ -5397,7 +5397,7 @@ }, { "body": { - "id": 7472, + "id": 7394, "nodeType": "Block", "src": "1679:99:30", "statements": [ @@ -5409,18 +5409,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7466, + "id": 7388, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1717:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7467, + "id": 7389, "isConstant": false, "isLValue": false, "isPure": false, @@ -5436,11 +5436,11 @@ }, { "argumentTypes": null, - "id": 7468, + "id": 7390, "name": "dedgeCompoundManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7458, + "referencedDeclaration": 7380, "src": "1729:20:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5449,11 +5449,11 @@ }, { "argumentTypes": null, - "id": 7469, + "id": 7391, "name": "enterMarketCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7460, + "referencedDeclaration": 7382, "src": "1751:19:30", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -5476,21 +5476,21 @@ "typeString": "bytes memory" } ], - "id": 7465, + "id": 7387, "name": "buildAndEnterMarkets", "nodeType": "Identifier", "overloadedDeclarations": [ - 7473, - 7567 + 7395, + 7489 ], - "referencedDeclaration": 7567, + "referencedDeclaration": 7489, "src": "1696:20:30", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_payable_$", "typeString": "function (address,address,bytes memory) returns (address payable)" } }, - "id": 7470, + "id": 7392, "isConstant": false, "isLValue": false, "isPure": false, @@ -5504,30 +5504,30 @@ "typeString": "address payable" } }, - "functionReturnParameters": 7464, - "id": 7471, + "functionReturnParameters": 7386, + "id": 7393, "nodeType": "Return", "src": "1689:82:30" } ] }, "documentation": null, - "id": 7473, + "id": 7395, "implemented": true, "kind": "function", "modifiers": [], "name": "buildAndEnterMarkets", "nodeType": "FunctionDefinition", "parameters": { - "id": 7461, + "id": 7383, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7458, + "id": 7380, "name": "dedgeCompoundManager", "nodeType": "VariableDeclaration", - "scope": 7473, + "scope": 7395, "src": "1569:28:30", "stateVariable": false, "storageLocation": "default", @@ -5536,7 +5536,7 @@ "typeString": "address" }, "typeName": { - "id": 7457, + "id": 7379, "name": "address", "nodeType": "ElementaryTypeName", "src": "1569:7:30", @@ -5551,10 +5551,10 @@ }, { "constant": false, - "id": 7460, + "id": 7382, "name": "enterMarketCalldata", "nodeType": "VariableDeclaration", - "scope": 7473, + "scope": 7395, "src": "1607:32:30", "stateVariable": false, "storageLocation": "memory", @@ -5563,7 +5563,7 @@ "typeString": "bytes" }, "typeName": { - "id": 7459, + "id": 7381, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1607:5:30", @@ -5579,15 +5579,15 @@ "src": "1559:86:30" }, "returnParameters": { - "id": 7464, + "id": 7386, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7463, + "id": 7385, "name": "", "nodeType": "VariableDeclaration", - "scope": 7473, + "scope": 7395, "src": "1662:15:30", "stateVariable": false, "storageLocation": "default", @@ -5596,7 +5596,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7462, + "id": 7384, "name": "address", "nodeType": "ElementaryTypeName", "src": "1662:15:30", @@ -5612,7 +5612,7 @@ ], "src": "1661:17:30" }, - "scope": 7568, + "scope": 7490, "src": "1530:248:30", "stateMutability": "nonpayable", "superFunction": null, @@ -5620,7 +5620,7 @@ }, { "body": { - "id": 7566, + "id": 7488, "nodeType": "Block", "src": "1956:724:30", "statements": [ @@ -5631,7 +5631,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 7490, + "id": 7412, "isConstant": false, "isLValue": false, "isPure": false, @@ -5640,25 +5640,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7484, + "id": 7406, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "2036:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7486, + "id": 7408, "indexExpression": { "argumentTypes": null, - "id": 7485, + "id": 7407, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2044:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5684,7 +5684,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 7488, + "id": 7410, "isConstant": false, "isLValue": false, "isPure": true, @@ -5707,7 +5707,7 @@ "typeString": "int_const 0" } ], - "id": 7487, + "id": 7409, "isConstant": false, "isLValue": false, "isPure": true, @@ -5720,7 +5720,7 @@ }, "typeName": "address" }, - "id": 7489, + "id": 7411, "isConstant": false, "isLValue": false, "isPure": true, @@ -5741,11 +5741,11 @@ } }, "falseBody": null, - "id": 7500, + "id": 7422, "nodeType": "IfStatement", "src": "2032:98:30", "trueBody": { - "id": 7499, + "id": 7421, "nodeType": "Block", "src": "2066:64:30", "statements": [ @@ -5760,25 +5760,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7493, + "id": 7415, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "2103:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7495, + "id": 7417, "indexExpression": { "argumentTypes": null, - "id": 7494, + "id": 7416, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2111:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5804,7 +5804,7 @@ "typeString": "address" } ], - "id": 7492, + "id": 7414, "isConstant": false, "isLValue": false, "isPure": true, @@ -5817,7 +5817,7 @@ }, "typeName": "uint160" }, - "id": 7496, + "id": 7418, "isConstant": false, "isLValue": false, "isPure": false, @@ -5839,7 +5839,7 @@ "typeString": "uint160" } ], - "id": 7491, + "id": 7413, "isConstant": false, "isLValue": false, "isPure": true, @@ -5852,7 +5852,7 @@ }, "typeName": "address" }, - "id": 7497, + "id": 7419, "isConstant": false, "isLValue": false, "isPure": false, @@ -5866,8 +5866,8 @@ "typeString": "address payable" } }, - "functionReturnParameters": 7483, - "id": 7498, + "functionReturnParameters": 7405, + "id": 7420, "nodeType": "Return", "src": "2080:39:30" } @@ -5876,15 +5876,15 @@ }, { "assignments": [ - 7502 + 7424 ], "declarations": [ { "constant": false, - "id": 7502, + "id": 7424, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 7566, + "scope": 7488, "src": "2140:21:30", "stateVariable": false, "storageLocation": "default", @@ -5893,7 +5893,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7501, + "id": 7423, "name": "address", "nodeType": "ElementaryTypeName", "src": "2140:15:30", @@ -5907,7 +5907,7 @@ "visibility": "internal" } ], - "id": 7511, + "id": 7433, "initialValue": { "argumentTypes": null, "arguments": [ @@ -5919,11 +5919,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7507, + "id": 7429, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "2193:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -5938,7 +5938,7 @@ "typeString": "contract DSProxyCache" } ], - "id": 7506, + "id": 7428, "isConstant": false, "isLValue": false, "isPure": true, @@ -5951,7 +5951,7 @@ }, "typeName": "address" }, - "id": 7508, + "id": 7430, "isConstant": false, "isLValue": false, "isPure": false, @@ -5973,7 +5973,7 @@ "typeString": "address" } ], - "id": 7505, + "id": 7427, "isConstant": false, "isLValue": false, "isPure": false, @@ -5981,23 +5981,23 @@ "nodeType": "NewExpression", "src": "2172:12:30", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_DACProxy_$7244_$", "typeString": "function (address) returns (contract DACProxy)" }, "typeName": { "contractScope": null, - "id": 7504, + "id": 7426, "name": "DACProxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "2176:8:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } } }, - "id": 7509, + "id": 7431, "isConstant": false, "isLValue": false, "isPure": false, @@ -6007,7 +6007,7 @@ "nodeType": "FunctionCall", "src": "2172:28:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } } @@ -6015,11 +6015,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } ], - "id": 7503, + "id": 7425, "isConstant": false, "isLValue": false, "isPure": true, @@ -6032,7 +6032,7 @@ }, "typeName": "address" }, - "id": 7510, + "id": 7432, "isConstant": false, "isLValue": false, "isPure": false, @@ -6057,18 +6057,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7513, + "id": 7435, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "2224:3:30", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 7514, + "id": 7436, "isConstant": false, "isLValue": false, "isPure": false, @@ -6084,11 +6084,11 @@ }, { "argumentTypes": null, - "id": 7515, + "id": 7437, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2236:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6100,11 +6100,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7517, + "id": 7439, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2251:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6119,7 +6119,7 @@ "typeString": "address payable" } ], - "id": 7516, + "id": 7438, "isConstant": false, "isLValue": false, "isPure": true, @@ -6132,7 +6132,7 @@ }, "typeName": "address" }, - "id": 7518, + "id": 7440, "isConstant": false, "isLValue": false, "isPure": false, @@ -6151,11 +6151,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7520, + "id": 7442, "name": "cache", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7343, + "referencedDeclaration": 7265, "src": "2267:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSProxyCache_$3788", @@ -6170,7 +6170,7 @@ "typeString": "contract DSProxyCache" } ], - "id": 7519, + "id": 7441, "isConstant": false, "isLValue": false, "isPure": true, @@ -6183,7 +6183,7 @@ }, "typeName": "address" }, - "id": 7521, + "id": 7443, "isConstant": false, "isLValue": false, "isPure": false, @@ -6217,18 +6217,18 @@ "typeString": "address" } ], - "id": 7512, + "id": 7434, "name": "Created", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7337, + "referencedDeclaration": 7259, "src": "2216:7:30", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address,address,address)" } }, - "id": 7522, + "id": 7444, "isConstant": false, "isLValue": false, "isPure": false, @@ -6242,21 +6242,21 @@ "typeString": "tuple()" } }, - "id": 7523, + "id": 7445, "nodeType": "EmitStatement", "src": "2211:63:30" }, { "assignments": [ - 7525 + 7447 ], "declarations": [ { "constant": false, - "id": 7525, + "id": 7447, "name": "guard", "nodeType": "VariableDeclaration", - "scope": 7566, + "scope": 7488, "src": "2285:13:30", "stateVariable": false, "storageLocation": "default", @@ -6266,7 +6266,7 @@ }, "typeName": { "contractScope": null, - "id": 7524, + "id": 7446, "name": "DSGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3163, @@ -6280,7 +6280,7 @@ "visibility": "internal" } ], - "id": 7529, + "id": 7451, "initialValue": { "argumentTypes": null, "arguments": [], @@ -6288,18 +6288,18 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7526, + "id": 7448, "name": "dsGuardFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7345, + "referencedDeclaration": 7267, "src": "2301:14:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuardFactory_$3195", "typeString": "contract DSGuardFactory" } }, - "id": 7527, + "id": 7449, "isConstant": false, "isLValue": false, "isPure": false, @@ -6313,7 +6313,7 @@ "typeString": "function () external returns (contract DSGuard)" } }, - "id": 7528, + "id": 7450, "isConstant": false, "isLValue": false, "isPure": false, @@ -6336,11 +6336,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7533, + "id": 7455, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2351:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6357,18 +6357,18 @@ ], "expression": { "argumentTypes": null, - "id": 7530, + "id": 7452, "name": "guard", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7525, + "referencedDeclaration": 7447, "src": "2336:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 7532, + "id": 7454, "isConstant": false, "isLValue": false, "isPure": false, @@ -6382,7 +6382,7 @@ "typeString": "function (address) external" } }, - "id": 7534, + "id": 7456, "isConstant": false, "isLValue": false, "isPure": false, @@ -6396,7 +6396,7 @@ "typeString": "tuple()" } }, - "id": 7535, + "id": 7457, "nodeType": "ExpressionStatement", "src": "2336:21:30" }, @@ -6406,11 +6406,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7540, + "id": 7462, "name": "dedgeCompoundManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7477, + "referencedDeclaration": 7399, "src": "2467:20:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6419,11 +6419,11 @@ }, { "argumentTypes": null, - "id": 7541, + "id": 7463, "name": "enterMarketCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7479, + "referencedDeclaration": 7401, "src": "2501:19:30", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -6447,11 +6447,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7537, + "id": 7459, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2439:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6466,18 +6466,18 @@ "typeString": "address payable" } ], - "id": 7536, + "id": 7458, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "2430:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7538, + "id": 7460, "isConstant": false, "isLValue": false, "isPure": false, @@ -6487,11 +6487,11 @@ "nodeType": "FunctionCall", "src": "2430:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7539, + "id": 7461, "isConstant": false, "isLValue": false, "isPure": false, @@ -6505,7 +6505,7 @@ "typeString": "function (address,bytes memory) payable external returns (bytes memory)" } }, - "id": 7542, + "id": 7464, "isConstant": false, "isLValue": false, "isPure": false, @@ -6519,7 +6519,7 @@ "typeString": "bytes memory" } }, - "id": 7543, + "id": 7465, "nodeType": "ExpressionStatement", "src": "2430:100:30" }, @@ -6529,11 +6529,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7548, + "id": 7470, "name": "guard", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7525, + "referencedDeclaration": 7447, "src": "2570:5:30", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", @@ -6553,11 +6553,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7545, + "id": 7467, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2550:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6572,18 +6572,18 @@ "typeString": "address payable" } ], - "id": 7544, + "id": 7466, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "2541:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7546, + "id": 7468, "isConstant": false, "isLValue": false, "isPure": false, @@ -6593,11 +6593,11 @@ "nodeType": "FunctionCall", "src": "2541:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7547, + "id": 7469, "isConstant": false, "isLValue": false, "isPure": false, @@ -6611,7 +6611,7 @@ "typeString": "function (contract DSAuthority) external" } }, - "id": 7549, + "id": 7471, "isConstant": false, "isLValue": false, "isPure": false, @@ -6625,7 +6625,7 @@ "typeString": "tuple()" } }, - "id": 7550, + "id": 7472, "nodeType": "ExpressionStatement", "src": "2541:35:30" }, @@ -6635,11 +6635,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7555, + "id": 7477, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2611:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6659,11 +6659,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7552, + "id": 7474, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2595:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6678,18 +6678,18 @@ "typeString": "address payable" } ], - "id": 7551, + "id": 7473, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "2586:8:30", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 7553, + "id": 7475, "isConstant": false, "isLValue": false, "isPure": false, @@ -6699,11 +6699,11 @@ "nodeType": "FunctionCall", "src": "2586:15:30", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 7554, + "id": 7476, "isConstant": false, "isLValue": false, "isPure": false, @@ -6717,7 +6717,7 @@ "typeString": "function (address) external" } }, - "id": 7556, + "id": 7478, "isConstant": false, "isLValue": false, "isPure": false, @@ -6731,14 +6731,14 @@ "typeString": "tuple()" } }, - "id": 7557, + "id": 7479, "nodeType": "ExpressionStatement", "src": "2586:31:30" }, { "expression": { "argumentTypes": null, - "id": 7562, + "id": 7484, "isConstant": false, "isLValue": false, "isPure": false, @@ -6747,25 +6747,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 7558, + "id": 7480, "name": "proxies", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7341, + "referencedDeclaration": 7263, "src": "2628:7:30", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 7560, + "id": 7482, "indexExpression": { "argumentTypes": null, - "id": 7559, + "id": 7481, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7475, + "referencedDeclaration": 7397, "src": "2636:5:30", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6787,11 +6787,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 7561, + "id": 7483, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2645:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -6804,48 +6804,48 @@ "typeString": "address" } }, - "id": 7563, + "id": 7485, "nodeType": "ExpressionStatement", "src": "2628:22:30" }, { "expression": { "argumentTypes": null, - "id": 7564, + "id": 7486, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7502, + "referencedDeclaration": 7424, "src": "2668:5:30", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "functionReturnParameters": 7483, - "id": 7565, + "functionReturnParameters": 7405, + "id": 7487, "nodeType": "Return", "src": "2661:12:30" } ] }, "documentation": null, - "id": 7567, + "id": 7489, "implemented": true, "kind": "function", "modifiers": [], "name": "buildAndEnterMarkets", "nodeType": "FunctionDefinition", "parameters": { - "id": 7480, + "id": 7402, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7475, + "id": 7397, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 7567, + "scope": 7489, "src": "1823:13:30", "stateVariable": false, "storageLocation": "default", @@ -6854,7 +6854,7 @@ "typeString": "address" }, "typeName": { - "id": 7474, + "id": 7396, "name": "address", "nodeType": "ElementaryTypeName", "src": "1823:7:30", @@ -6869,10 +6869,10 @@ }, { "constant": false, - "id": 7477, + "id": 7399, "name": "dedgeCompoundManager", "nodeType": "VariableDeclaration", - "scope": 7567, + "scope": 7489, "src": "1846:28:30", "stateVariable": false, "storageLocation": "default", @@ -6881,7 +6881,7 @@ "typeString": "address" }, "typeName": { - "id": 7476, + "id": 7398, "name": "address", "nodeType": "ElementaryTypeName", "src": "1846:7:30", @@ -6896,10 +6896,10 @@ }, { "constant": false, - "id": 7479, + "id": 7401, "name": "enterMarketCalldata", "nodeType": "VariableDeclaration", - "scope": 7567, + "scope": 7489, "src": "1884:32:30", "stateVariable": false, "storageLocation": "memory", @@ -6908,7 +6908,7 @@ "typeString": "bytes" }, "typeName": { - "id": 7478, + "id": 7400, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1884:5:30", @@ -6924,15 +6924,15 @@ "src": "1813:109:30" }, "returnParameters": { - "id": 7483, + "id": 7405, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7482, + "id": 7404, "name": "", "nodeType": "VariableDeclaration", - "scope": 7567, + "scope": 7489, "src": "1939:15:30", "stateVariable": false, "storageLocation": "default", @@ -6941,7 +6941,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7481, + "id": 7403, "name": "address", "nodeType": "ElementaryTypeName", "src": "1939:15:30", @@ -6957,14 +6957,14 @@ ], "src": "1938:17:30" }, - "scope": 7568, + "scope": 7490, "src": "1784:896:30", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 7569, + "scope": 7491, "src": "138:2544:30" } ], @@ -7011,11 +7011,11 @@ }, "links": {}, "address": "0xCfEB869F69431e42cdB54A4F4f105C19C080A601", - "transactionHash": "0xa6715abbb307d8ef4f3c4a69a004fde698dd5d8aefe218f7be99bbad6cd936cb" + "transactionHash": "0x4db88709fd4523a8fab6029cecf96f7ffa1748c670e3e0b554088a3bbd8efc59" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:19:27.798Z", + "updatedAt": "2020-04-03T04:49:15.460Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeCompoundManager.json b/packages/smart-contracts/artifacts/DedgeCompoundManager.json index 6d168aa..1d80da7 100644 --- a/packages/smart-contracts/artifacts/DedgeCompoundManager.json +++ b/packages/smart-contracts/artifacts/DedgeCompoundManager.json @@ -536,9 +536,9 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveCToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"approveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrowThroughProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCTokenAddress\",\"type\":\"address\"}],\"name\":\"clearCollateralDust\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingDustAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCTokenAddress\",\"type\":\"address\"}],\"name\":\"clearDebtDust\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarketsAndApproveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalfThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"supplyCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"borrowCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"supplyETH\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyETHAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_loanAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"swapCollateralPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_loanAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"swapDebtPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeCompoundManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"swapOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeCompoundManager.sol\":\"DedgeCompoundManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0x3c1fd10b8372a9605ad8c50f4412ec551c2a6cd1c766119a38d30b972285ace5\",\"urls\":[\"bzz-raw://6cab8f4140440f85d86faec88351efb196e3c628bc16b0cf808637efe6814e5a\",\"dweb:/ipfs/QmPKFwz4Aw4SoEZ9oXCdwexULcDaLX8HV3f3nEQXbskakU\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0x1fdd5a3473065d6f14bb74dd57431257d1a6b3d400472fe22e616665fb71d9fa\",\"urls\":[\"bzz-raw://9f75f98e1fcb3b0618bfc4d7e07dfa313250fb3e5012c5101e3e5589b013d6f7\",\"dweb:/ipfs/QmZduo9rqcHV9soppn4eJ9EM3UessLwTpBv3dcx5QWzyzj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICompoundPriceOracle.sol\":{\"keccak256\":\"0xb19ae717f5b05fbc0ffdf3a4b96cd71811071ab2d3c5f73ee8835541c5bd573b\",\"urls\":[\"bzz-raw://52efc7166851b50b539166f234babc41cf25a4cc2c5997c9bc3f801117b4ea47\",\"dweb:/ipfs/QmXv2P3p6adgTCHUMXdufESTbJEdbQ3DkLKRnsENRC1Dmx\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":{\"keccak256\":\"0xfe69c2a9adaca0cdcfb06df5a2a2d99b5fd2d507e85379d7e412e218c523583a\",\"urls\":[\"bzz-raw://525284cba89cdd1c6b146ec5774e284b6b0af8639cfad96c059e700a9e727ca2\",\"dweb:/ipfs/QmSBBvdmCWkfFscFKWK6oMYL7F4HQ2aZPxJhEX5p3W4ivp\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeCompoundManager.sol\":{\"keccak256\":\"0x40cf0894186b39884631af6e60f13fa4855d63742cc13fd29caaf4c9a5b55264\",\"urls\":[\"bzz-raw://f4549c40d3dcaa3bca353db65d8911b16fa9b27507f1d24b89a0ea61abbce621\",\"dweb:/ipfs/QmWQCPGiTkyZxUv8YYzW3NU5i4kv5wnXZH1xNLmPWgjZwt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xa93ae0a65d7000bbef6d0a31cd3c2d6f79e37e13db19f127b53e6e707f0507b4\",\"urls\":[\"bzz-raw://931af9f9ea15aade3685b204a6637b1902296f06b4128eb57a066e7ab8929026\",\"dweb:/ipfs/QmSauiKUjz6sXdcWSwvjzwNsr8Gvbj38mh97ikks4dwfbR\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b5061449d806100206000396000f3fe60806040526004361061014b5760003560e01c80637720cc87116100b6578063c04bea9b1161006f578063c04bea9b14610391578063c2998238146103ad578063d13b8c72146103d6578063d2f70c40146103f2578063d882dc6c1461041b578063f2b9fdb8146104375761014b565b80637720cc87146102cf57806396294178146102eb5780639a22a1b914610307578063abdb5ea814610330578063b14886ee1461034c578063ba59154f146103755761014b565b806341ec5cc41161010857806341ec5cc41461022c5780634907b8fc146102485780634b8a35291461025257806359086a5e1461027b57806367600cc21461029757806375d40945146102b35761014b565b80630b4e0630146101505780631e9a69501461016c57806324d1ea12146101885780632d8af543146101b15780632f379b13146101da5780633dc4d99a14610203575b600080fd5b61016a60048036036101659190810190613643565b610453565b005b61018660048036036101819190810190613643565b6105e5565b005b34801561019457600080fd5b506101af60048036036101aa9190810190613831565b6106b6565b005b3480156101bd57600080fd5b506101d860048036036101d391908101906136e2565b610a73565b005b3480156101e657600080fd5b5061020160048036036101fc91908101906134ea565b610a88565b005b34801561020f57600080fd5b5061022a600480360361022591908101906136e2565b610e27565b005b61024660048036036102419190810190613643565b610edf565b005b610250610ef5565b005b34801561025e57600080fd5b5061027960048036036102749190810190613643565b610f6c565b005b61029560048036036102909190810190613591565b61103d565b005b6102b160048036036102ac9190810190613643565b6111d5565b005b6102cd60048036036102c8919081019061367f565b6111ee565b005b6102e960048036036102e49190810190613591565b611208565b005b61030560048036036103009190810190613643565b61126c565b005b34801561031357600080fd5b5061032e60048036036103299190810190613643565b61133d565b005b61034a60048036036103459190810190613643565b611356565b005b34801561035857600080fd5b50610373600480360361036e9190810190613831565b6114e0565b005b61038f600480360361038a9190810190613643565b61180f565b005b6103ab60048036036103a691908101906135e0565b611871565b005b3480156103b957600080fd5b506103d460048036036103cf91908101906136e2565b611c89565b005b6103f060048036036103eb91908101906135e0565b611da8565b005b3480156103fe57600080fd5b5061041960048036036104149190810190613643565b612224565b005b61043560048036036104309190810190613643565b61237e565b005b610451600480360361044c9190810190613643565b612397565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161048e9190613e5b565b60206040518083038186803b1580156104a657600080fd5b505afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104de9190810190613808565b9050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105345761053333308585612535565b5b61053e8383612397565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105799190613e5b565b60206040518083038186803b15801561059157600080fd5b505afa1580156105a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c99190810190613808565b90506105df84336105da848661268c565b6126e2565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b8152600401610620919061415d565b602060405180830381600087803b15801561063a57600080fd5b505af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106729190810190613808565b146106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a990613fdd565b60405180910390fd5b5050565b6106be613206565b82826106cd91908101906137df565b90506000816000015190506000826020015190506000836040015190506000610711886107038b8d6128e790919063ffffffff16565b6128e790919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561075957600080fd5b505afa15801561076d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061079191908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107d3576107ce838b611356565b6108fe565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061085391908101906134c1565b90506000610861828d61293c565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b815260040161089e929190613ef9565b602060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190613764565b506108fb8582611356565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561094457600080fd5b505afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097c91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109be576109b98282610f6c565b610a67565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0657600080fd5b505afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a3e91908101906134c1565b90506000610a4c8284612952565b9050610a588482610f6c565b610a638282856129ed565b5050505b50505050505050505050565b610a7c81611c89565b610a8581610e27565b50565b600085905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b0d91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610b4857849050610bd2565b610bcf8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9157600080fd5b505afa158015610ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bc991908101906134c1565b86612b25565b90505b606089604051602001610be59190613e5b565b6040516020818303038152906040528585604051602001610c0893929190613e20565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9991908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cde57600080fd5b505afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d1691908101906134c1565b9050610d228a82612bc0565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8673ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dbd91908101906134c1565b86866040518563ffffffff1660e01b8152600401610dde9493929190613e76565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b50505050610e1a8a82612dc2565b5050505050505050505050565b60008090505b8151811015610edb57734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610e6d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610ece57610ecd828281518110610e9f57fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612224565b5b8080600101915050610e2d565b5050565b610ee7610ef5565b610ef18282610f6c565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f5157600080fd5b505af1158015610f65573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b8152600401610fa7919061415d565b602060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ff99190810190613808565b14611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090613fbd565b60405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f6578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b81526004016110bf9190613e5b565b6000604051808303818588803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b50505050506111d0565b6111008282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b815260040161113d929190613ef9565b602060405180830381600087803b15801561115757600080fd5b505af115801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061118f9190810190613808565b146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c69061405d565b60405180910390fd5b5b505050565b6111df828261126c565b6111ea8233836126e2565b5050565b6111f88484612397565b6112028282610f6c565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461125c5761125b33308484612535565b5b61126783838361103d565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b81526004016112a7919061415d565b602060405180830381600087803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f99190810190613808565b14611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090613ffd565b60405180910390fd5b5050565b6113478282610f6c565b6113528233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611404578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505050506114dc565b61140e8282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401611449919061415d565b602060405180830381600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061149b9190810190613808565b146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061409d565b60405180910390fd5b5b5050565b6114e8613206565b82826114f791908101906137df565b9050600081600001519050600082602001519050600083604001519050600061153b8861152d8b8d612fc490919063ffffffff16565b612fc490919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561158357600080fd5b505afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115bb91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115fd576115f88282612397565b61169a565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164557600080fd5b505afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061167d91908101906134c1565b9050600061168b828461293c565b90506116978482612397565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e057600080fd5b505afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171891908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561175a57611755838b61126c565b611803565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a257600080fd5b505afa1580156117b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117da91908101906134c1565b905060006117e8828d612952565b90506117f4858261126c565b6117ff82828e6129ed565b5050505b50505050505050505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118635761186233308484612535565b5b61186d8282611356565b5050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906140fd565b60405180910390fd5b6000808590506118f0858561126c565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561193657600080fd5b505afa15801561194a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061196e91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611a2f57611a288373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ea57600080fd5b505afa1580156119fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a2291908101906134c1565b8561293c565b9150611c77565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7557600080fd5b505afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aad91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b6e57611b678573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2957600080fd5b505afa158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b6191908101906134c1565b8561300e565b9150611c76565b611c738573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb757600080fd5b505afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bef91908101906134c1565b8473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c6d91908101906134c1565b86613024565b91505b5b611c818383612397565b505050505050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b8152600401611cd89190613f22565b600060405180830381600087803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611d2f9190810190613723565b905060008090505b8151811015611da3576000828281518110611d4e57fe5b602002602001015114611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d9061403d565b60405180910390fd5b8080600101915050611d37565b505050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0e9061413d565b60405180910390fd5b600084905060008060008373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6757600080fd5b505afa158015611e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e9f91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611f79578473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f5091908101906134c1565b9050611f5c8187612952565b9250611f688584610f6c565b611f738184886129ed565b50612210565b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611fbf57600080fd5b505afa158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff791908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156120d1578673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561207057600080fd5b505afa158015612084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a891908101906134c1565b91506120b48287612b25565b92506120c08584610f6c565b6120cb82848861303c565b5061220f565b8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561211757600080fd5b505afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061214f91908101906134c1565b91508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561219757600080fd5b505afa1580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121cf91908101906134c1565b905060006121dd8388612b25565b90506121e98282612952565b93506121f58685610f6c565b6122008285836129ed565b5061220c83828961303c565b50505b5b61221a8787611356565b5050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561226c57600080fd5b505afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122a491908101906134c1565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016122e5929190613ef9565b602060405180830381600087803b1580156122ff57600080fd5b505af1158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123379190810190613764565b151514612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906140dd565b60405180910390fd5b505050565b61238882826105e5565b6123938233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245957734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561243b57600080fd5b505af115801561244f573d6000803e3d6000fd5b5050505050612531565b6124638282612224565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040161249e919061415d565b602060405180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124f09190810190613808565b14612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279061411d565b60405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561257d57600080fd5b505afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125b591908101906134c1565b90508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b81526004016125f493929190613ec2565b602060405180830381600087803b15801561260e57600080fd5b505af1158015612622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126469190810190613764565b612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c9061407d565b60405180910390fd5b5050505050565b6000828211156126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c89061401d565b60405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612798578173ffffffffffffffffffffffffffffffffffffffff168160405161274e90613e46565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b5050506128e2565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156127de57600080fd5b505afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061281691908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612850929190613ef9565b602060405180830381600087803b15801561286a57600080fd5b505af115801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128a29190810190613764565b6128e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d8906140bd565b60405180910390fd5b5b505050565b600080828401905083811015612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990613f9d565b60405180910390fd5b8091505092915050565b600061294a8383600161303c565b905092915050565b600061295d836130e0565b73ffffffffffffffffffffffffffffffffffffffff16632640f62c836040518263ffffffff1660e01b8152600401612995919061415d565b60206040518083038186803b1580156129ad57600080fd5b505afa1580156129c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e59190810190613808565b905092915050565b6000806129f9856130e0565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401612a36929190613ef9565b602060405180830381600087803b158015612a5057600080fd5b505af1158015612a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a889190810190613764565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b8152600401612ac9939291906141a1565b602060405180830381600087803b158015612ae357600080fd5b505af1158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b1b9190810190613808565b9150509392505050565b6000612b30836130e0565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401612b68919061415d565b60206040518083038186803b158015612b8057600080fd5b505afa158015612b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612bb89190810190613808565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b505afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c4091908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612cb757600080fd5b505afa158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cef919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d6d919081019061378d565b6040518463ffffffff1660e01b8152600401612d8b93929190613f44565b600060405180830381600087803b158015612da557600080fd5b505af1158015612db9573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0a57600080fd5b505afa158015612e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e4291908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612eb957600080fd5b505afa158015612ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ef1919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612f3757600080fd5b505afa158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f6f919081019061378d565b6040518463ffffffff1660e01b8152600401612f8d93929190613f44565b600060405180830381600087803b158015612fa757600080fd5b505af1158015612fbb573d6000803e3d6000fd5b50505050505050565b600061300683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613186565b905092915050565b600061301c838360016129ed565b905092915050565b600061303384848460016131e1565b90509392505050565b6000613047846130e0565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b8152600401613085929190614178565b6020604051808303818588803b15801561309e57600080fd5b505af11580156130b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506130d79190810190613808565b90509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161312f9190613e5b565b60206040518083038186803b15801561314757600080fd5b505afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061317f91908101906134c1565b9050919050565b60008383111582906131ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c59190613f7b565b60405180910390fd5b5060008385039050809150509392505050565b6000806131ee868561300e565b90506131fb85828561303c565b915050949350505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600081359050613278816143d0565b92915050565b60008151905061328d816143d0565b92915050565b6000813590506132a2816143e7565b92915050565b600082601f8301126132b957600080fd5b81356132cc6132c782614205565b6141d8565b915081818352602084019350602081019050838560208402820111156132f157600080fd5b60005b8381101561332157816133078882613269565b8452602084019350602083019250506001810190506132f4565b5050505092915050565b600082601f83011261333c57600080fd5b815161334f61334a8261422d565b6141d8565b9150818183526020840193506020810190508385602084028201111561337457600080fd5b60005b838110156133a4578161338a88826134ac565b845260208401935060208301925050600181019050613377565b5050505092915050565b6000815190506133bd816143fe565b92915050565b6000815190506133d281614415565b92915050565b60008083601f8401126133ea57600080fd5b8235905067ffffffffffffffff81111561340357600080fd5b60208301915083600182028301111561341b57600080fd5b9250929050565b6000815190506134318161442c565b92915050565b60006060828403121561344957600080fd5b61345360606141d8565b9050600061346384828501613269565b600083015250602061347784828501613269565b602083015250604061348b84828501613269565b60408301525092915050565b6000813590506134a681614443565b92915050565b6000815190506134bb81614443565b92915050565b6000602082840312156134d357600080fd5b60006134e18482850161327e565b91505092915050565b600080600080600080600060c0888a03121561350557600080fd5b60006135138a828b01613269565b97505060206135248a828b01613293565b96505060406135358a828b01613269565b95505060606135468a828b01613269565b94505060806135578a828b01613497565b93505060a088013567ffffffffffffffff81111561357457600080fd5b6135808a828b016133d8565b925092505092959891949750929550565b6000806000606084860312156135a657600080fd5b60006135b486828701613269565b93505060206135c586828701613269565b92505060406135d686828701613497565b9150509250925092565b600080600080608085870312156135f657600080fd5b600061360487828801613269565b945050602061361587828801613269565b935050604061362687828801613497565b925050606061363787828801613269565b91505092959194509250565b6000806040838503121561365657600080fd5b600061366485828601613269565b925050602061367585828601613497565b9150509250929050565b6000806000806080858703121561369557600080fd5b60006136a387828801613269565b94505060206136b487828801613497565b93505060406136c587828801613269565b92505060606136d687828801613497565b91505092959194509250565b6000602082840312156136f457600080fd5b600082013567ffffffffffffffff81111561370e57600080fd5b61371a848285016132a8565b91505092915050565b60006020828403121561373557600080fd5b600082015167ffffffffffffffff81111561374f57600080fd5b61375b8482850161332b565b91505092915050565b60006020828403121561377657600080fd5b6000613784848285016133ae565b91505092915050565b60006020828403121561379f57600080fd5b60006137ad848285016133c3565b91505092915050565b6000602082840312156137c857600080fd5b60006137d684828501613422565b91505092915050565b6000606082840312156137f157600080fd5b60006137ff84828501613437565b91505092915050565b60006020828403121561381a57600080fd5b6000613828848285016134ac565b91505092915050565b60008060008060006080868803121561384957600080fd5b600061385788828901613497565b955050602061386888828901613497565b945050604061387988828901613497565b935050606086013567ffffffffffffffff81111561389657600080fd5b6138a2888289016133d8565b92509250509295509295909350565b60006138bd83836138d8565b60208301905092915050565b6138d281614347565b82525050565b6138e1816142d1565b82525050565b6138f0816142d1565b82525050565b600061390182614265565b61390b8185614293565b935061391683614255565b8060005b8381101561394757815161392e88826138b1565b975061393983614286565b92505060018101905061391a565b5085935050505092915050565b61395d81614301565b82525050565b600061396f83856142b5565b935061397c83858461437d565b82840190509392505050565b600061399382614270565b61399d81856142a4565b93506139ad81856020860161438c565b6139b6816143bf565b840191505092915050565b60006139cc82614270565b6139d681856142b5565b93506139e681856020860161438c565b80840191505092915050565b60006139fd8261427b565b613a0781856142c0565b9350613a1781856020860161438c565b613a20816143bf565b840191505092915050565b6000613a38601b836142c0565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613a78601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c656400006000830152602082019050919050565b6000613ab8601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c656400006000830152602082019050919050565b6000613af86029836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613b5e6014836142c0565b91507f736166652d6d6174682d7375622d6661696c65640000000000000000000000006000830152602082019050919050565b6000613b9e601e836142c0565b91507f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c656400006000830152602082019050919050565b6000613bde6023836142c0565b91507f636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d66616960008301527f6c656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c44601e836142c0565b91507f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c656400006000830152602082019050919050565b6000613c84601d836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000613cc46019836142c0565b91507f636d706e642d6d67722d7472616e736665722d6661696c6564000000000000006000830152602082019050919050565b6000613d046000836142b5565b9150600082019050919050565b6000613d1e6020836142c0565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b6000613d5e601d836142c0565b91507f636c6561722d636f6c6c61746572616c2d73616d652d616464726573730000006000830152602082019050919050565b6000613d9e601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c656400006000830152602082019050919050565b6000613dde6017836142c0565b91507f636c6561722d646562742d73616d652d616464726573730000000000000000006000830152602082019050919050565b613e1a8161433d565b82525050565b6000613e2c82866139c1565b9150613e39828486613963565b9150819050949350505050565b6000613e5182613cf7565b9150819050919050565b6000602082019050613e7060008301846138e7565b92915050565b6000608082019050613e8b60008301876138c9565b613e9860208301866138e7565b613ea56040830185613e11565b8181036060830152613eb78184613988565b905095945050505050565b6000606082019050613ed760008301866138e7565b613ee460208301856138e7565b613ef16040830184613e11565b949350505050565b6000604082019050613f0e60008301856138e7565b613f1b6020830184613e11565b9392505050565b60006020820190508181036000830152613f3c81846138f6565b905092915050565b6000606082019050613f596000830186613954565b613f666020830185613954565b613f736040830184613954565b949350505050565b60006020820190508181036000830152613f9581846139f2565b905092915050565b60006020820190508181036000830152613fb681613a2b565b9050919050565b60006020820190508181036000830152613fd681613a6b565b9050919050565b60006020820190508181036000830152613ff681613aab565b9050919050565b6000602082019050818103600083015261401681613aeb565b9050919050565b6000602082019050818103600083015261403681613b51565b9050919050565b6000602082019050818103600083015261405681613b91565b9050919050565b6000602082019050818103600083015261407681613bd1565b9050919050565b6000602082019050818103600083015261409681613c37565b9050919050565b600060208201905081810360008301526140b681613c77565b9050919050565b600060208201905081810360008301526140d681613cb7565b9050919050565b600060208201905081810360008301526140f681613d11565b9050919050565b6000602082019050818103600083015261411681613d51565b9050919050565b6000602082019050818103600083015261413681613d91565b9050919050565b6000602082019050818103600083015261415681613dd1565b9050919050565b60006020820190506141726000830184613e11565b92915050565b600060408201905061418d6000830185613e11565b61419a6020830184613e11565b9392505050565b60006060820190506141b66000830186613e11565b6141c36020830185613e11565b6141d06040830184613e11565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156141fb57600080fd5b8060405250919050565b600067ffffffffffffffff82111561421c57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561424457600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006142dc8261431d565b9050919050565b60006142ee8261431d565b9050919050565b60008115159050919050565b6000819050919050565b6000614316826142d1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061435282614359565b9050919050565b60006143648261436b565b9050919050565b60006143768261431d565b9050919050565b82818337600083830152505050565b60005b838110156143aa57808201518184015260208101905061438f565b838111156143b9576000848401525b50505050565b6000601f19601f8301169050919050565b6143d9816142d1565b81146143e457600080fd5b50565b6143f0816142e3565b81146143fb57600080fd5b50565b614407816142f5565b811461441257600080fd5b50565b61441e81614301565b811461442957600080fd5b50565b6144358161430b565b811461444057600080fd5b50565b61444c8161433d565b811461445757600080fd5b5056fea365627a7a72315820a5842cc3fb9277f4834bda57de6b007148385641a0fe404910a6b34a5724ae7d6c6578706572696d656e74616cf564736f6c63430005100040", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c80637720cc87116100b6578063c04bea9b1161006f578063c04bea9b14610391578063c2998238146103ad578063d13b8c72146103d6578063d2f70c40146103f2578063d882dc6c1461041b578063f2b9fdb8146104375761014b565b80637720cc87146102cf57806396294178146102eb5780639a22a1b914610307578063abdb5ea814610330578063b14886ee1461034c578063ba59154f146103755761014b565b806341ec5cc41161010857806341ec5cc41461022c5780634907b8fc146102485780634b8a35291461025257806359086a5e1461027b57806367600cc21461029757806375d40945146102b35761014b565b80630b4e0630146101505780631e9a69501461016c57806324d1ea12146101885780632d8af543146101b15780632f379b13146101da5780633dc4d99a14610203575b600080fd5b61016a60048036036101659190810190613643565b610453565b005b61018660048036036101819190810190613643565b6105e5565b005b34801561019457600080fd5b506101af60048036036101aa9190810190613831565b6106b6565b005b3480156101bd57600080fd5b506101d860048036036101d391908101906136e2565b610a73565b005b3480156101e657600080fd5b5061020160048036036101fc91908101906134ea565b610a88565b005b34801561020f57600080fd5b5061022a600480360361022591908101906136e2565b610e27565b005b61024660048036036102419190810190613643565b610edf565b005b610250610ef5565b005b34801561025e57600080fd5b5061027960048036036102749190810190613643565b610f6c565b005b61029560048036036102909190810190613591565b61103d565b005b6102b160048036036102ac9190810190613643565b6111d5565b005b6102cd60048036036102c8919081019061367f565b6111ee565b005b6102e960048036036102e49190810190613591565b611208565b005b61030560048036036103009190810190613643565b61126c565b005b34801561031357600080fd5b5061032e60048036036103299190810190613643565b61133d565b005b61034a60048036036103459190810190613643565b611356565b005b34801561035857600080fd5b50610373600480360361036e9190810190613831565b6114e0565b005b61038f600480360361038a9190810190613643565b61180f565b005b6103ab60048036036103a691908101906135e0565b611871565b005b3480156103b957600080fd5b506103d460048036036103cf91908101906136e2565b611c89565b005b6103f060048036036103eb91908101906135e0565b611da8565b005b3480156103fe57600080fd5b5061041960048036036104149190810190613643565b612224565b005b61043560048036036104309190810190613643565b61237e565b005b610451600480360361044c9190810190613643565b612397565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161048e9190613e5b565b60206040518083038186803b1580156104a657600080fd5b505afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104de9190810190613808565b9050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105345761053333308585612535565b5b61053e8383612397565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105799190613e5b565b60206040518083038186803b15801561059157600080fd5b505afa1580156105a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c99190810190613808565b90506105df84336105da848661268c565b6126e2565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b8152600401610620919061415d565b602060405180830381600087803b15801561063a57600080fd5b505af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106729190810190613808565b146106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a990613fdd565b60405180910390fd5b5050565b6106be613206565b82826106cd91908101906137df565b90506000816000015190506000826020015190506000836040015190506000610711886107038b8d6128e790919063ffffffff16565b6128e790919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561075957600080fd5b505afa15801561076d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061079191908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107d3576107ce838b611356565b6108fe565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061085391908101906134c1565b90506000610861828d61293c565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b815260040161089e929190613ef9565b602060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190613764565b506108fb8582611356565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561094457600080fd5b505afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097c91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109be576109b98282610f6c565b610a67565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0657600080fd5b505afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a3e91908101906134c1565b90506000610a4c8284612952565b9050610a588482610f6c565b610a638282856129ed565b5050505b50505050505050505050565b610a7c81611c89565b610a8581610e27565b50565b600085905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b0d91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610b4857849050610bd2565b610bcf8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9157600080fd5b505afa158015610ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bc991908101906134c1565b86612b25565b90505b606089604051602001610be59190613e5b565b6040516020818303038152906040528585604051602001610c0893929190613e20565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9991908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cde57600080fd5b505afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d1691908101906134c1565b9050610d228a82612bc0565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8673ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dbd91908101906134c1565b86866040518563ffffffff1660e01b8152600401610dde9493929190613e76565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b50505050610e1a8a82612dc2565b5050505050505050505050565b60008090505b8151811015610edb57734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610e6d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610ece57610ecd828281518110610e9f57fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612224565b5b8080600101915050610e2d565b5050565b610ee7610ef5565b610ef18282610f6c565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f5157600080fd5b505af1158015610f65573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b8152600401610fa7919061415d565b602060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ff99190810190613808565b14611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090613fbd565b60405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f6578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b81526004016110bf9190613e5b565b6000604051808303818588803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b50505050506111d0565b6111008282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b815260040161113d929190613ef9565b602060405180830381600087803b15801561115757600080fd5b505af115801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061118f9190810190613808565b146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c69061405d565b60405180910390fd5b5b505050565b6111df828261126c565b6111ea8233836126e2565b5050565b6111f88484612397565b6112028282610f6c565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461125c5761125b33308484612535565b5b61126783838361103d565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b81526004016112a7919061415d565b602060405180830381600087803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f99190810190613808565b14611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090613ffd565b60405180910390fd5b5050565b6113478282610f6c565b6113528233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611404578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505050506114dc565b61140e8282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401611449919061415d565b602060405180830381600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061149b9190810190613808565b146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061409d565b60405180910390fd5b5b5050565b6114e8613206565b82826114f791908101906137df565b9050600081600001519050600082602001519050600083604001519050600061153b8861152d8b8d612fc490919063ffffffff16565b612fc490919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561158357600080fd5b505afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115bb91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115fd576115f88282612397565b61169a565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164557600080fd5b505afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061167d91908101906134c1565b9050600061168b828461293c565b90506116978482612397565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e057600080fd5b505afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171891908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561175a57611755838b61126c565b611803565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a257600080fd5b505afa1580156117b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117da91908101906134c1565b905060006117e8828d612952565b90506117f4858261126c565b6117ff82828e6129ed565b5050505b50505050505050505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118635761186233308484612535565b5b61186d8282611356565b5050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906140fd565b60405180910390fd5b6000808590506118f0858561126c565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561193657600080fd5b505afa15801561194a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061196e91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611a2f57611a288373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ea57600080fd5b505afa1580156119fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a2291908101906134c1565b8561293c565b9150611c77565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7557600080fd5b505afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aad91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b6e57611b678573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2957600080fd5b505afa158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b6191908101906134c1565b8561300e565b9150611c76565b611c738573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb757600080fd5b505afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bef91908101906134c1565b8473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c6d91908101906134c1565b86613024565b91505b5b611c818383612397565b505050505050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b8152600401611cd89190613f22565b600060405180830381600087803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611d2f9190810190613723565b905060008090505b8151811015611da3576000828281518110611d4e57fe5b602002602001015114611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d9061403d565b60405180910390fd5b8080600101915050611d37565b505050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0e9061413d565b60405180910390fd5b600084905060008060008373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6757600080fd5b505afa158015611e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e9f91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611f79578473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f5091908101906134c1565b9050611f5c8187612952565b9250611f688584610f6c565b611f738184886129ed565b50612210565b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611fbf57600080fd5b505afa158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff791908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156120d1578673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561207057600080fd5b505afa158015612084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a891908101906134c1565b91506120b48287612b25565b92506120c08584610f6c565b6120cb82848861303c565b5061220f565b8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561211757600080fd5b505afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061214f91908101906134c1565b91508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561219757600080fd5b505afa1580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121cf91908101906134c1565b905060006121dd8388612b25565b90506121e98282612952565b93506121f58685610f6c565b6122008285836129ed565b5061220c83828961303c565b50505b5b61221a8787611356565b5050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561226c57600080fd5b505afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122a491908101906134c1565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016122e5929190613ef9565b602060405180830381600087803b1580156122ff57600080fd5b505af1158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123379190810190613764565b151514612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906140dd565b60405180910390fd5b505050565b61238882826105e5565b6123938233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245957734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561243b57600080fd5b505af115801561244f573d6000803e3d6000fd5b5050505050612531565b6124638282612224565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040161249e919061415d565b602060405180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124f09190810190613808565b14612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279061411d565b60405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561257d57600080fd5b505afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125b591908101906134c1565b90508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b81526004016125f493929190613ec2565b602060405180830381600087803b15801561260e57600080fd5b505af1158015612622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126469190810190613764565b612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c9061407d565b60405180910390fd5b5050505050565b6000828211156126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c89061401d565b60405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612798578173ffffffffffffffffffffffffffffffffffffffff168160405161274e90613e46565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b5050506128e2565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156127de57600080fd5b505afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061281691908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612850929190613ef9565b602060405180830381600087803b15801561286a57600080fd5b505af115801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128a29190810190613764565b6128e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d8906140bd565b60405180910390fd5b5b505050565b600080828401905083811015612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990613f9d565b60405180910390fd5b8091505092915050565b600061294a8383600161303c565b905092915050565b600061295d836130e0565b73ffffffffffffffffffffffffffffffffffffffff16632640f62c836040518263ffffffff1660e01b8152600401612995919061415d565b60206040518083038186803b1580156129ad57600080fd5b505afa1580156129c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e59190810190613808565b905092915050565b6000806129f9856130e0565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401612a36929190613ef9565b602060405180830381600087803b158015612a5057600080fd5b505af1158015612a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a889190810190613764565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b8152600401612ac9939291906141a1565b602060405180830381600087803b158015612ae357600080fd5b505af1158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b1b9190810190613808565b9150509392505050565b6000612b30836130e0565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401612b68919061415d565b60206040518083038186803b158015612b8057600080fd5b505afa158015612b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612bb89190810190613808565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b505afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c4091908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612cb757600080fd5b505afa158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cef919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d6d919081019061378d565b6040518463ffffffff1660e01b8152600401612d8b93929190613f44565b600060405180830381600087803b158015612da557600080fd5b505af1158015612db9573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0a57600080fd5b505afa158015612e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e4291908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612eb957600080fd5b505afa158015612ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ef1919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612f3757600080fd5b505afa158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f6f919081019061378d565b6040518463ffffffff1660e01b8152600401612f8d93929190613f44565b600060405180830381600087803b158015612fa757600080fd5b505af1158015612fbb573d6000803e3d6000fd5b50505050505050565b600061300683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613186565b905092915050565b600061301c838360016129ed565b905092915050565b600061303384848460016131e1565b90509392505050565b6000613047846130e0565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b8152600401613085929190614178565b6020604051808303818588803b15801561309e57600080fd5b505af11580156130b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506130d79190810190613808565b90509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161312f9190613e5b565b60206040518083038186803b15801561314757600080fd5b505afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061317f91908101906134c1565b9050919050565b60008383111582906131ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c59190613f7b565b60405180910390fd5b5060008385039050809150509392505050565b6000806131ee868561300e565b90506131fb85828561303c565b915050949350505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600081359050613278816143d0565b92915050565b60008151905061328d816143d0565b92915050565b6000813590506132a2816143e7565b92915050565b600082601f8301126132b957600080fd5b81356132cc6132c782614205565b6141d8565b915081818352602084019350602081019050838560208402820111156132f157600080fd5b60005b8381101561332157816133078882613269565b8452602084019350602083019250506001810190506132f4565b5050505092915050565b600082601f83011261333c57600080fd5b815161334f61334a8261422d565b6141d8565b9150818183526020840193506020810190508385602084028201111561337457600080fd5b60005b838110156133a4578161338a88826134ac565b845260208401935060208301925050600181019050613377565b5050505092915050565b6000815190506133bd816143fe565b92915050565b6000815190506133d281614415565b92915050565b60008083601f8401126133ea57600080fd5b8235905067ffffffffffffffff81111561340357600080fd5b60208301915083600182028301111561341b57600080fd5b9250929050565b6000815190506134318161442c565b92915050565b60006060828403121561344957600080fd5b61345360606141d8565b9050600061346384828501613269565b600083015250602061347784828501613269565b602083015250604061348b84828501613269565b60408301525092915050565b6000813590506134a681614443565b92915050565b6000815190506134bb81614443565b92915050565b6000602082840312156134d357600080fd5b60006134e18482850161327e565b91505092915050565b600080600080600080600060c0888a03121561350557600080fd5b60006135138a828b01613269565b97505060206135248a828b01613293565b96505060406135358a828b01613269565b95505060606135468a828b01613269565b94505060806135578a828b01613497565b93505060a088013567ffffffffffffffff81111561357457600080fd5b6135808a828b016133d8565b925092505092959891949750929550565b6000806000606084860312156135a657600080fd5b60006135b486828701613269565b93505060206135c586828701613269565b92505060406135d686828701613497565b9150509250925092565b600080600080608085870312156135f657600080fd5b600061360487828801613269565b945050602061361587828801613269565b935050604061362687828801613497565b925050606061363787828801613269565b91505092959194509250565b6000806040838503121561365657600080fd5b600061366485828601613269565b925050602061367585828601613497565b9150509250929050565b6000806000806080858703121561369557600080fd5b60006136a387828801613269565b94505060206136b487828801613497565b93505060406136c587828801613269565b92505060606136d687828801613497565b91505092959194509250565b6000602082840312156136f457600080fd5b600082013567ffffffffffffffff81111561370e57600080fd5b61371a848285016132a8565b91505092915050565b60006020828403121561373557600080fd5b600082015167ffffffffffffffff81111561374f57600080fd5b61375b8482850161332b565b91505092915050565b60006020828403121561377657600080fd5b6000613784848285016133ae565b91505092915050565b60006020828403121561379f57600080fd5b60006137ad848285016133c3565b91505092915050565b6000602082840312156137c857600080fd5b60006137d684828501613422565b91505092915050565b6000606082840312156137f157600080fd5b60006137ff84828501613437565b91505092915050565b60006020828403121561381a57600080fd5b6000613828848285016134ac565b91505092915050565b60008060008060006080868803121561384957600080fd5b600061385788828901613497565b955050602061386888828901613497565b945050604061387988828901613497565b935050606086013567ffffffffffffffff81111561389657600080fd5b6138a2888289016133d8565b92509250509295509295909350565b60006138bd83836138d8565b60208301905092915050565b6138d281614347565b82525050565b6138e1816142d1565b82525050565b6138f0816142d1565b82525050565b600061390182614265565b61390b8185614293565b935061391683614255565b8060005b8381101561394757815161392e88826138b1565b975061393983614286565b92505060018101905061391a565b5085935050505092915050565b61395d81614301565b82525050565b600061396f83856142b5565b935061397c83858461437d565b82840190509392505050565b600061399382614270565b61399d81856142a4565b93506139ad81856020860161438c565b6139b6816143bf565b840191505092915050565b60006139cc82614270565b6139d681856142b5565b93506139e681856020860161438c565b80840191505092915050565b60006139fd8261427b565b613a0781856142c0565b9350613a1781856020860161438c565b613a20816143bf565b840191505092915050565b6000613a38601b836142c0565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613a78601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c656400006000830152602082019050919050565b6000613ab8601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c656400006000830152602082019050919050565b6000613af86029836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613b5e6014836142c0565b91507f736166652d6d6174682d7375622d6661696c65640000000000000000000000006000830152602082019050919050565b6000613b9e601e836142c0565b91507f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c656400006000830152602082019050919050565b6000613bde6023836142c0565b91507f636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d66616960008301527f6c656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c44601e836142c0565b91507f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c656400006000830152602082019050919050565b6000613c84601d836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000613cc46019836142c0565b91507f636d706e642d6d67722d7472616e736665722d6661696c6564000000000000006000830152602082019050919050565b6000613d046000836142b5565b9150600082019050919050565b6000613d1e6020836142c0565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b6000613d5e601d836142c0565b91507f636c6561722d636f6c6c61746572616c2d73616d652d616464726573730000006000830152602082019050919050565b6000613d9e601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c656400006000830152602082019050919050565b6000613dde6017836142c0565b91507f636c6561722d646562742d73616d652d616464726573730000000000000000006000830152602082019050919050565b613e1a8161433d565b82525050565b6000613e2c82866139c1565b9150613e39828486613963565b9150819050949350505050565b6000613e5182613cf7565b9150819050919050565b6000602082019050613e7060008301846138e7565b92915050565b6000608082019050613e8b60008301876138c9565b613e9860208301866138e7565b613ea56040830185613e11565b8181036060830152613eb78184613988565b905095945050505050565b6000606082019050613ed760008301866138e7565b613ee460208301856138e7565b613ef16040830184613e11565b949350505050565b6000604082019050613f0e60008301856138e7565b613f1b6020830184613e11565b9392505050565b60006020820190508181036000830152613f3c81846138f6565b905092915050565b6000606082019050613f596000830186613954565b613f666020830185613954565b613f736040830184613954565b949350505050565b60006020820190508181036000830152613f9581846139f2565b905092915050565b60006020820190508181036000830152613fb681613a2b565b9050919050565b60006020820190508181036000830152613fd681613a6b565b9050919050565b60006020820190508181036000830152613ff681613aab565b9050919050565b6000602082019050818103600083015261401681613aeb565b9050919050565b6000602082019050818103600083015261403681613b51565b9050919050565b6000602082019050818103600083015261405681613b91565b9050919050565b6000602082019050818103600083015261407681613bd1565b9050919050565b6000602082019050818103600083015261409681613c37565b9050919050565b600060208201905081810360008301526140b681613c77565b9050919050565b600060208201905081810360008301526140d681613cb7565b9050919050565b600060208201905081810360008301526140f681613d11565b9050919050565b6000602082019050818103600083015261411681613d51565b9050919050565b6000602082019050818103600083015261413681613d91565b9050919050565b6000602082019050818103600083015261415681613dd1565b9050919050565b60006020820190506141726000830184613e11565b92915050565b600060408201905061418d6000830185613e11565b61419a6020830184613e11565b9392505050565b60006060820190506141b66000830186613e11565b6141c36020830185613e11565b6141d06040830184613e11565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156141fb57600080fd5b8060405250919050565b600067ffffffffffffffff82111561421c57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561424457600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006142dc8261431d565b9050919050565b60006142ee8261431d565b9050919050565b60008115159050919050565b6000819050919050565b6000614316826142d1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061435282614359565b9050919050565b60006143648261436b565b9050919050565b60006143768261431d565b9050919050565b82818337600083830152505050565b60005b838110156143aa57808201518184015260208101905061438f565b838111156143b9576000848401525b50505050565b6000601f19601f8301169050919050565b6143d9816142d1565b81146143e457600080fd5b50565b6143f0816142e3565b81146143fb57600080fd5b50565b614407816142f5565b811461441257600080fd5b50565b61441e81614301565b811461442957600080fd5b50565b6144358161430b565b811461444057600080fd5b50565b61444c8161433d565b811461445757600080fd5b5056fea365627a7a72315820a5842cc3fb9277f4834bda57de6b007148385641a0fe404910a6b34a5724ae7d6c6578706572696d656e74616cf564736f6c63430005100040", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveCToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"approveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrowThroughProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCTokenAddress\",\"type\":\"address\"}],\"name\":\"clearCollateralDust\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingDustAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCTokenAddress\",\"type\":\"address\"}],\"name\":\"clearDebtDust\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarketsAndApproveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalfThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"supplyCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"borrowCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"supplyETH\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyETHAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_loanAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"swapCollateralPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_loanAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"swapDebtPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeCompoundManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"swapOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeCompoundManager.sol\":\"DedgeCompoundManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICompoundPriceOracle.sol\":{\"keccak256\":\"0xb19ae717f5b05fbc0ffdf3a4b96cd71811071ab2d3c5f73ee8835541c5bd573b\",\"urls\":[\"bzz-raw://52efc7166851b50b539166f234babc41cf25a4cc2c5997c9bc3f801117b4ea47\",\"dweb:/ipfs/QmXv2P3p6adgTCHUMXdufESTbJEdbQ3DkLKRnsENRC1Dmx\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":{\"keccak256\":\"0xfe69c2a9adaca0cdcfb06df5a2a2d99b5fd2d507e85379d7e412e218c523583a\",\"urls\":[\"bzz-raw://525284cba89cdd1c6b146ec5774e284b6b0af8639cfad96c059e700a9e727ca2\",\"dweb:/ipfs/QmSBBvdmCWkfFscFKWK6oMYL7F4HQ2aZPxJhEX5p3W4ivp\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeCompoundManager.sol\":{\"keccak256\":\"0x40cf0894186b39884631af6e60f13fa4855d63742cc13fd29caaf4c9a5b55264\",\"urls\":[\"bzz-raw://f4549c40d3dcaa3bca353db65d8911b16fa9b27507f1d24b89a0ea61abbce621\",\"dweb:/ipfs/QmWQCPGiTkyZxUv8YYzW3NU5i4kv5wnXZH1xNLmPWgjZwt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5061449d806100206000396000f3fe60806040526004361061014b5760003560e01c80637720cc87116100b6578063c04bea9b1161006f578063c04bea9b14610391578063c2998238146103ad578063d13b8c72146103d6578063d2f70c40146103f2578063d882dc6c1461041b578063f2b9fdb8146104375761014b565b80637720cc87146102cf57806396294178146102eb5780639a22a1b914610307578063abdb5ea814610330578063b14886ee1461034c578063ba59154f146103755761014b565b806341ec5cc41161010857806341ec5cc41461022c5780634907b8fc146102485780634b8a35291461025257806359086a5e1461027b57806367600cc21461029757806375d40945146102b35761014b565b80630b4e0630146101505780631e9a69501461016c57806324d1ea12146101885780632d8af543146101b15780632f379b13146101da5780633dc4d99a14610203575b600080fd5b61016a60048036036101659190810190613643565b610453565b005b61018660048036036101819190810190613643565b6105e5565b005b34801561019457600080fd5b506101af60048036036101aa9190810190613831565b6106b6565b005b3480156101bd57600080fd5b506101d860048036036101d391908101906136e2565b610a73565b005b3480156101e657600080fd5b5061020160048036036101fc91908101906134ea565b610a88565b005b34801561020f57600080fd5b5061022a600480360361022591908101906136e2565b610e27565b005b61024660048036036102419190810190613643565b610edf565b005b610250610ef5565b005b34801561025e57600080fd5b5061027960048036036102749190810190613643565b610f6c565b005b61029560048036036102909190810190613591565b61103d565b005b6102b160048036036102ac9190810190613643565b6111d5565b005b6102cd60048036036102c8919081019061367f565b6111ee565b005b6102e960048036036102e49190810190613591565b611208565b005b61030560048036036103009190810190613643565b61126c565b005b34801561031357600080fd5b5061032e60048036036103299190810190613643565b61133d565b005b61034a60048036036103459190810190613643565b611356565b005b34801561035857600080fd5b50610373600480360361036e9190810190613831565b6114e0565b005b61038f600480360361038a9190810190613643565b61180f565b005b6103ab60048036036103a691908101906135e0565b611871565b005b3480156103b957600080fd5b506103d460048036036103cf91908101906136e2565b611c89565b005b6103f060048036036103eb91908101906135e0565b611da8565b005b3480156103fe57600080fd5b5061041960048036036104149190810190613643565b612224565b005b61043560048036036104309190810190613643565b61237e565b005b610451600480360361044c9190810190613643565b612397565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161048e9190613e5b565b60206040518083038186803b1580156104a657600080fd5b505afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104de9190810190613808565b9050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105345761053333308585612535565b5b61053e8383612397565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105799190613e5b565b60206040518083038186803b15801561059157600080fd5b505afa1580156105a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c99190810190613808565b90506105df84336105da848661268c565b6126e2565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b8152600401610620919061415d565b602060405180830381600087803b15801561063a57600080fd5b505af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106729190810190613808565b146106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a990613fdd565b60405180910390fd5b5050565b6106be613206565b82826106cd91908101906137df565b90506000816000015190506000826020015190506000836040015190506000610711886107038b8d6128e790919063ffffffff16565b6128e790919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561075957600080fd5b505afa15801561076d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061079191908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107d3576107ce838b611356565b6108fe565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061085391908101906134c1565b90506000610861828d61293c565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b815260040161089e929190613ef9565b602060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190613764565b506108fb8582611356565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561094457600080fd5b505afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097c91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109be576109b98282610f6c565b610a67565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0657600080fd5b505afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a3e91908101906134c1565b90506000610a4c8284612952565b9050610a588482610f6c565b610a638282856129ed565b5050505b50505050505050505050565b610a7c81611c89565b610a8581610e27565b50565b600085905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b0d91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610b4857849050610bd2565b610bcf8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9157600080fd5b505afa158015610ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bc991908101906134c1565b86612b25565b90505b606089604051602001610be59190613e5b565b6040516020818303038152906040528585604051602001610c0893929190613e20565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9991908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cde57600080fd5b505afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d1691908101906134c1565b9050610d228a82612bc0565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8673ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dbd91908101906134c1565b86866040518563ffffffff1660e01b8152600401610dde9493929190613e76565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b50505050610e1a8a82612dc2565b5050505050505050505050565b60008090505b8151811015610edb57734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610e6d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610ece57610ecd828281518110610e9f57fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612224565b5b8080600101915050610e2d565b5050565b610ee7610ef5565b610ef18282610f6c565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f5157600080fd5b505af1158015610f65573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b8152600401610fa7919061415d565b602060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ff99190810190613808565b14611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090613fbd565b60405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f6578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b81526004016110bf9190613e5b565b6000604051808303818588803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b50505050506111d0565b6111008282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b815260040161113d929190613ef9565b602060405180830381600087803b15801561115757600080fd5b505af115801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061118f9190810190613808565b146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c69061405d565b60405180910390fd5b5b505050565b6111df828261126c565b6111ea8233836126e2565b5050565b6111f88484612397565b6112028282610f6c565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461125c5761125b33308484612535565b5b61126783838361103d565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b81526004016112a7919061415d565b602060405180830381600087803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f99190810190613808565b14611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090613ffd565b60405180910390fd5b5050565b6113478282610f6c565b6113528233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611404578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505050506114dc565b61140e8282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401611449919061415d565b602060405180830381600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061149b9190810190613808565b146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061409d565b60405180910390fd5b5b5050565b6114e8613206565b82826114f791908101906137df565b9050600081600001519050600082602001519050600083604001519050600061153b8861152d8b8d612fc490919063ffffffff16565b612fc490919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561158357600080fd5b505afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115bb91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115fd576115f88282612397565b61169a565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164557600080fd5b505afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061167d91908101906134c1565b9050600061168b828461293c565b90506116978482612397565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e057600080fd5b505afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171891908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561175a57611755838b61126c565b611803565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a257600080fd5b505afa1580156117b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117da91908101906134c1565b905060006117e8828d612952565b90506117f4858261126c565b6117ff82828e6129ed565b5050505b50505050505050505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118635761186233308484612535565b5b61186d8282611356565b5050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906140fd565b60405180910390fd5b6000808590506118f0858561126c565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561193657600080fd5b505afa15801561194a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061196e91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611a2f57611a288373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ea57600080fd5b505afa1580156119fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a2291908101906134c1565b8561293c565b9150611c77565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7557600080fd5b505afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aad91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b6e57611b678573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2957600080fd5b505afa158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b6191908101906134c1565b8561300e565b9150611c76565b611c738573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb757600080fd5b505afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bef91908101906134c1565b8473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c6d91908101906134c1565b86613024565b91505b5b611c818383612397565b505050505050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b8152600401611cd89190613f22565b600060405180830381600087803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611d2f9190810190613723565b905060008090505b8151811015611da3576000828281518110611d4e57fe5b602002602001015114611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d9061403d565b60405180910390fd5b8080600101915050611d37565b505050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0e9061413d565b60405180910390fd5b600084905060008060008373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6757600080fd5b505afa158015611e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e9f91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611f79578473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f5091908101906134c1565b9050611f5c8187612952565b9250611f688584610f6c565b611f738184886129ed565b50612210565b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611fbf57600080fd5b505afa158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff791908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156120d1578673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561207057600080fd5b505afa158015612084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a891908101906134c1565b91506120b48287612b25565b92506120c08584610f6c565b6120cb82848861303c565b5061220f565b8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561211757600080fd5b505afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061214f91908101906134c1565b91508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561219757600080fd5b505afa1580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121cf91908101906134c1565b905060006121dd8388612b25565b90506121e98282612952565b93506121f58685610f6c565b6122008285836129ed565b5061220c83828961303c565b50505b5b61221a8787611356565b5050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561226c57600080fd5b505afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122a491908101906134c1565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016122e5929190613ef9565b602060405180830381600087803b1580156122ff57600080fd5b505af1158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123379190810190613764565b151514612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906140dd565b60405180910390fd5b505050565b61238882826105e5565b6123938233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245957734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561243b57600080fd5b505af115801561244f573d6000803e3d6000fd5b5050505050612531565b6124638282612224565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040161249e919061415d565b602060405180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124f09190810190613808565b14612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279061411d565b60405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561257d57600080fd5b505afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125b591908101906134c1565b90508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b81526004016125f493929190613ec2565b602060405180830381600087803b15801561260e57600080fd5b505af1158015612622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126469190810190613764565b612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c9061407d565b60405180910390fd5b5050505050565b6000828211156126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c89061401d565b60405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612798578173ffffffffffffffffffffffffffffffffffffffff168160405161274e90613e46565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b5050506128e2565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156127de57600080fd5b505afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061281691908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612850929190613ef9565b602060405180830381600087803b15801561286a57600080fd5b505af115801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128a29190810190613764565b6128e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d8906140bd565b60405180910390fd5b5b505050565b600080828401905083811015612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990613f9d565b60405180910390fd5b8091505092915050565b600061294a8383600161303c565b905092915050565b600061295d836130e0565b73ffffffffffffffffffffffffffffffffffffffff16632640f62c836040518263ffffffff1660e01b8152600401612995919061415d565b60206040518083038186803b1580156129ad57600080fd5b505afa1580156129c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e59190810190613808565b905092915050565b6000806129f9856130e0565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401612a36929190613ef9565b602060405180830381600087803b158015612a5057600080fd5b505af1158015612a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a889190810190613764565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b8152600401612ac9939291906141a1565b602060405180830381600087803b158015612ae357600080fd5b505af1158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b1b9190810190613808565b9150509392505050565b6000612b30836130e0565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401612b68919061415d565b60206040518083038186803b158015612b8057600080fd5b505afa158015612b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612bb89190810190613808565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b505afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c4091908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612cb757600080fd5b505afa158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cef919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d6d919081019061378d565b6040518463ffffffff1660e01b8152600401612d8b93929190613f44565b600060405180830381600087803b158015612da557600080fd5b505af1158015612db9573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0a57600080fd5b505afa158015612e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e4291908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612eb957600080fd5b505afa158015612ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ef1919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612f3757600080fd5b505afa158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f6f919081019061378d565b6040518463ffffffff1660e01b8152600401612f8d93929190613f44565b600060405180830381600087803b158015612fa757600080fd5b505af1158015612fbb573d6000803e3d6000fd5b50505050505050565b600061300683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613186565b905092915050565b600061301c838360016129ed565b905092915050565b600061303384848460016131e1565b90509392505050565b6000613047846130e0565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b8152600401613085929190614178565b6020604051808303818588803b15801561309e57600080fd5b505af11580156130b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506130d79190810190613808565b90509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161312f9190613e5b565b60206040518083038186803b15801561314757600080fd5b505afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061317f91908101906134c1565b9050919050565b60008383111582906131ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c59190613f7b565b60405180910390fd5b5060008385039050809150509392505050565b6000806131ee868561300e565b90506131fb85828561303c565b915050949350505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600081359050613278816143d0565b92915050565b60008151905061328d816143d0565b92915050565b6000813590506132a2816143e7565b92915050565b600082601f8301126132b957600080fd5b81356132cc6132c782614205565b6141d8565b915081818352602084019350602081019050838560208402820111156132f157600080fd5b60005b8381101561332157816133078882613269565b8452602084019350602083019250506001810190506132f4565b5050505092915050565b600082601f83011261333c57600080fd5b815161334f61334a8261422d565b6141d8565b9150818183526020840193506020810190508385602084028201111561337457600080fd5b60005b838110156133a4578161338a88826134ac565b845260208401935060208301925050600181019050613377565b5050505092915050565b6000815190506133bd816143fe565b92915050565b6000815190506133d281614415565b92915050565b60008083601f8401126133ea57600080fd5b8235905067ffffffffffffffff81111561340357600080fd5b60208301915083600182028301111561341b57600080fd5b9250929050565b6000815190506134318161442c565b92915050565b60006060828403121561344957600080fd5b61345360606141d8565b9050600061346384828501613269565b600083015250602061347784828501613269565b602083015250604061348b84828501613269565b60408301525092915050565b6000813590506134a681614443565b92915050565b6000815190506134bb81614443565b92915050565b6000602082840312156134d357600080fd5b60006134e18482850161327e565b91505092915050565b600080600080600080600060c0888a03121561350557600080fd5b60006135138a828b01613269565b97505060206135248a828b01613293565b96505060406135358a828b01613269565b95505060606135468a828b01613269565b94505060806135578a828b01613497565b93505060a088013567ffffffffffffffff81111561357457600080fd5b6135808a828b016133d8565b925092505092959891949750929550565b6000806000606084860312156135a657600080fd5b60006135b486828701613269565b93505060206135c586828701613269565b92505060406135d686828701613497565b9150509250925092565b600080600080608085870312156135f657600080fd5b600061360487828801613269565b945050602061361587828801613269565b935050604061362687828801613497565b925050606061363787828801613269565b91505092959194509250565b6000806040838503121561365657600080fd5b600061366485828601613269565b925050602061367585828601613497565b9150509250929050565b6000806000806080858703121561369557600080fd5b60006136a387828801613269565b94505060206136b487828801613497565b93505060406136c587828801613269565b92505060606136d687828801613497565b91505092959194509250565b6000602082840312156136f457600080fd5b600082013567ffffffffffffffff81111561370e57600080fd5b61371a848285016132a8565b91505092915050565b60006020828403121561373557600080fd5b600082015167ffffffffffffffff81111561374f57600080fd5b61375b8482850161332b565b91505092915050565b60006020828403121561377657600080fd5b6000613784848285016133ae565b91505092915050565b60006020828403121561379f57600080fd5b60006137ad848285016133c3565b91505092915050565b6000602082840312156137c857600080fd5b60006137d684828501613422565b91505092915050565b6000606082840312156137f157600080fd5b60006137ff84828501613437565b91505092915050565b60006020828403121561381a57600080fd5b6000613828848285016134ac565b91505092915050565b60008060008060006080868803121561384957600080fd5b600061385788828901613497565b955050602061386888828901613497565b945050604061387988828901613497565b935050606086013567ffffffffffffffff81111561389657600080fd5b6138a2888289016133d8565b92509250509295509295909350565b60006138bd83836138d8565b60208301905092915050565b6138d281614347565b82525050565b6138e1816142d1565b82525050565b6138f0816142d1565b82525050565b600061390182614265565b61390b8185614293565b935061391683614255565b8060005b8381101561394757815161392e88826138b1565b975061393983614286565b92505060018101905061391a565b5085935050505092915050565b61395d81614301565b82525050565b600061396f83856142b5565b935061397c83858461437d565b82840190509392505050565b600061399382614270565b61399d81856142a4565b93506139ad81856020860161438c565b6139b6816143bf565b840191505092915050565b60006139cc82614270565b6139d681856142b5565b93506139e681856020860161438c565b80840191505092915050565b60006139fd8261427b565b613a0781856142c0565b9350613a1781856020860161438c565b613a20816143bf565b840191505092915050565b6000613a38601b836142c0565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613a78601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c656400006000830152602082019050919050565b6000613ab8601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c656400006000830152602082019050919050565b6000613af86029836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613b5e6014836142c0565b91507f736166652d6d6174682d7375622d6661696c65640000000000000000000000006000830152602082019050919050565b6000613b9e601e836142c0565b91507f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c656400006000830152602082019050919050565b6000613bde6023836142c0565b91507f636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d66616960008301527f6c656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c44601e836142c0565b91507f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c656400006000830152602082019050919050565b6000613c84601d836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000613cc46019836142c0565b91507f636d706e642d6d67722d7472616e736665722d6661696c6564000000000000006000830152602082019050919050565b6000613d046000836142b5565b9150600082019050919050565b6000613d1e6020836142c0565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b6000613d5e601d836142c0565b91507f636c6561722d636f6c6c61746572616c2d73616d652d616464726573730000006000830152602082019050919050565b6000613d9e601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c656400006000830152602082019050919050565b6000613dde6017836142c0565b91507f636c6561722d646562742d73616d652d616464726573730000000000000000006000830152602082019050919050565b613e1a8161433d565b82525050565b6000613e2c82866139c1565b9150613e39828486613963565b9150819050949350505050565b6000613e5182613cf7565b9150819050919050565b6000602082019050613e7060008301846138e7565b92915050565b6000608082019050613e8b60008301876138c9565b613e9860208301866138e7565b613ea56040830185613e11565b8181036060830152613eb78184613988565b905095945050505050565b6000606082019050613ed760008301866138e7565b613ee460208301856138e7565b613ef16040830184613e11565b949350505050565b6000604082019050613f0e60008301856138e7565b613f1b6020830184613e11565b9392505050565b60006020820190508181036000830152613f3c81846138f6565b905092915050565b6000606082019050613f596000830186613954565b613f666020830185613954565b613f736040830184613954565b949350505050565b60006020820190508181036000830152613f9581846139f2565b905092915050565b60006020820190508181036000830152613fb681613a2b565b9050919050565b60006020820190508181036000830152613fd681613a6b565b9050919050565b60006020820190508181036000830152613ff681613aab565b9050919050565b6000602082019050818103600083015261401681613aeb565b9050919050565b6000602082019050818103600083015261403681613b51565b9050919050565b6000602082019050818103600083015261405681613b91565b9050919050565b6000602082019050818103600083015261407681613bd1565b9050919050565b6000602082019050818103600083015261409681613c37565b9050919050565b600060208201905081810360008301526140b681613c77565b9050919050565b600060208201905081810360008301526140d681613cb7565b9050919050565b600060208201905081810360008301526140f681613d11565b9050919050565b6000602082019050818103600083015261411681613d51565b9050919050565b6000602082019050818103600083015261413681613d91565b9050919050565b6000602082019050818103600083015261415681613dd1565b9050919050565b60006020820190506141726000830184613e11565b92915050565b600060408201905061418d6000830185613e11565b61419a6020830184613e11565b9392505050565b60006060820190506141b66000830186613e11565b6141c36020830185613e11565b6141d06040830184613e11565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156141fb57600080fd5b8060405250919050565b600067ffffffffffffffff82111561421c57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561424457600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006142dc8261431d565b9050919050565b60006142ee8261431d565b9050919050565b60008115159050919050565b6000819050919050565b6000614316826142d1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061435282614359565b9050919050565b60006143648261436b565b9050919050565b60006143768261431d565b9050919050565b82818337600083830152505050565b60005b838110156143aa57808201518184015260208101905061438f565b838111156143b9576000848401525b50505050565b6000601f19601f8301169050919050565b6143d9816142d1565b81146143e457600080fd5b50565b6143f0816142e3565b81146143fb57600080fd5b50565b614407816142f5565b811461441257600080fd5b50565b61441e81614301565b811461442957600080fd5b50565b6144358161430b565b811461444057600080fd5b50565b61444c8161433d565b811461445757600080fd5b5056fea365627a7a72315820bca4a210997ac10003242cfbaf0c3d19e28510725f51c9d56bc6118d8a896bbf6c6578706572696d656e74616cf564736f6c63430005100040", + "deployedBytecode": "0x60806040526004361061014b5760003560e01c80637720cc87116100b6578063c04bea9b1161006f578063c04bea9b14610391578063c2998238146103ad578063d13b8c72146103d6578063d2f70c40146103f2578063d882dc6c1461041b578063f2b9fdb8146104375761014b565b80637720cc87146102cf57806396294178146102eb5780639a22a1b914610307578063abdb5ea814610330578063b14886ee1461034c578063ba59154f146103755761014b565b806341ec5cc41161010857806341ec5cc41461022c5780634907b8fc146102485780634b8a35291461025257806359086a5e1461027b57806367600cc21461029757806375d40945146102b35761014b565b80630b4e0630146101505780631e9a69501461016c57806324d1ea12146101885780632d8af543146101b15780632f379b13146101da5780633dc4d99a14610203575b600080fd5b61016a60048036036101659190810190613643565b610453565b005b61018660048036036101819190810190613643565b6105e5565b005b34801561019457600080fd5b506101af60048036036101aa9190810190613831565b6106b6565b005b3480156101bd57600080fd5b506101d860048036036101d391908101906136e2565b610a73565b005b3480156101e657600080fd5b5061020160048036036101fc91908101906134ea565b610a88565b005b34801561020f57600080fd5b5061022a600480360361022591908101906136e2565b610e27565b005b61024660048036036102419190810190613643565b610edf565b005b610250610ef5565b005b34801561025e57600080fd5b5061027960048036036102749190810190613643565b610f6c565b005b61029560048036036102909190810190613591565b61103d565b005b6102b160048036036102ac9190810190613643565b6111d5565b005b6102cd60048036036102c8919081019061367f565b6111ee565b005b6102e960048036036102e49190810190613591565b611208565b005b61030560048036036103009190810190613643565b61126c565b005b34801561031357600080fd5b5061032e60048036036103299190810190613643565b61133d565b005b61034a60048036036103459190810190613643565b611356565b005b34801561035857600080fd5b50610373600480360361036e9190810190613831565b6114e0565b005b61038f600480360361038a9190810190613643565b61180f565b005b6103ab60048036036103a691908101906135e0565b611871565b005b3480156103b957600080fd5b506103d460048036036103cf91908101906136e2565b611c89565b005b6103f060048036036103eb91908101906135e0565b611da8565b005b3480156103fe57600080fd5b5061041960048036036104149190810190613643565b612224565b005b61043560048036036104309190810190613643565b61237e565b005b610451600480360361044c9190810190613643565b612397565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161048e9190613e5b565b60206040518083038186803b1580156104a657600080fd5b505afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104de9190810190613808565b9050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105345761053333308585612535565b5b61053e8383612397565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105799190613e5b565b60206040518083038186803b15801561059157600080fd5b505afa1580156105a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c99190810190613808565b90506105df84336105da848661268c565b6126e2565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b8152600401610620919061415d565b602060405180830381600087803b15801561063a57600080fd5b505af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106729190810190613808565b146106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a990613fdd565b60405180910390fd5b5050565b6106be613206565b82826106cd91908101906137df565b90506000816000015190506000826020015190506000836040015190506000610711886107038b8d6128e790919063ffffffff16565b6128e790919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561075957600080fd5b505afa15801561076d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061079191908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107d3576107ce838b611356565b6108fe565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061085391908101906134c1565b90506000610861828d61293c565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b815260040161089e929190613ef9565b602060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190613764565b506108fb8582611356565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561094457600080fd5b505afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097c91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109be576109b98282610f6c565b610a67565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0657600080fd5b505afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a3e91908101906134c1565b90506000610a4c8284612952565b9050610a588482610f6c565b610a638282856129ed565b5050505b50505050505050505050565b610a7c81611c89565b610a8581610e27565b50565b600085905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b0d91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610b4857849050610bd2565b610bcf8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9157600080fd5b505afa158015610ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bc991908101906134c1565b86612b25565b90505b606089604051602001610be59190613e5b565b6040516020818303038152906040528585604051602001610c0893929190613e20565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9991908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cde57600080fd5b505afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d1691908101906134c1565b9050610d228a82612bc0565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8673ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dbd91908101906134c1565b86866040518563ffffffff1660e01b8152600401610dde9493929190613e76565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b50505050610e1a8a82612dc2565b5050505050505050505050565b60008090505b8151811015610edb57734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610e6d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610ece57610ecd828281518110610e9f57fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612224565b5b8080600101915050610e2d565b5050565b610ee7610ef5565b610ef18282610f6c565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f5157600080fd5b505af1158015610f65573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b8152600401610fa7919061415d565b602060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ff99190810190613808565b14611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090613fbd565b60405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f6578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b81526004016110bf9190613e5b565b6000604051808303818588803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b50505050506111d0565b6111008282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b815260040161113d929190613ef9565b602060405180830381600087803b15801561115757600080fd5b505af115801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061118f9190810190613808565b146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c69061405d565b60405180910390fd5b5b505050565b6111df828261126c565b6111ea8233836126e2565b5050565b6111f88484612397565b6112028282610f6c565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461125c5761125b33308484612535565b5b61126783838361103d565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b81526004016112a7919061415d565b602060405180830381600087803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f99190810190613808565b14611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090613ffd565b60405180910390fd5b5050565b6113478282610f6c565b6113528233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611404578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505050506114dc565b61140e8282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401611449919061415d565b602060405180830381600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061149b9190810190613808565b146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061409d565b60405180910390fd5b5b5050565b6114e8613206565b82826114f791908101906137df565b9050600081600001519050600082602001519050600083604001519050600061153b8861152d8b8d612fc490919063ffffffff16565b612fc490919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561158357600080fd5b505afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115bb91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115fd576115f88282612397565b61169a565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164557600080fd5b505afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061167d91908101906134c1565b9050600061168b828461293c565b90506116978482612397565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e057600080fd5b505afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171891908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561175a57611755838b61126c565b611803565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a257600080fd5b505afa1580156117b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117da91908101906134c1565b905060006117e8828d612952565b90506117f4858261126c565b6117ff82828e6129ed565b5050505b50505050505050505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118635761186233308484612535565b5b61186d8282611356565b5050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906140fd565b60405180910390fd5b6000808590506118f0858561126c565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561193657600080fd5b505afa15801561194a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061196e91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611a2f57611a288373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ea57600080fd5b505afa1580156119fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a2291908101906134c1565b8561293c565b9150611c77565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7557600080fd5b505afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aad91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b6e57611b678573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2957600080fd5b505afa158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b6191908101906134c1565b8561300e565b9150611c76565b611c738573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb757600080fd5b505afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bef91908101906134c1565b8473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c6d91908101906134c1565b86613024565b91505b5b611c818383612397565b505050505050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b8152600401611cd89190613f22565b600060405180830381600087803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611d2f9190810190613723565b905060008090505b8151811015611da3576000828281518110611d4e57fe5b602002602001015114611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d9061403d565b60405180910390fd5b8080600101915050611d37565b505050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0e9061413d565b60405180910390fd5b600084905060008060008373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6757600080fd5b505afa158015611e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e9f91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611f79578473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f5091908101906134c1565b9050611f5c8187612952565b9250611f688584610f6c565b611f738184886129ed565b50612210565b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611fbf57600080fd5b505afa158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff791908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156120d1578673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561207057600080fd5b505afa158015612084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a891908101906134c1565b91506120b48287612b25565b92506120c08584610f6c565b6120cb82848861303c565b5061220f565b8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561211757600080fd5b505afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061214f91908101906134c1565b91508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561219757600080fd5b505afa1580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121cf91908101906134c1565b905060006121dd8388612b25565b90506121e98282612952565b93506121f58685610f6c565b6122008285836129ed565b5061220c83828961303c565b50505b5b61221a8787611356565b5050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561226c57600080fd5b505afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122a491908101906134c1565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016122e5929190613ef9565b602060405180830381600087803b1580156122ff57600080fd5b505af1158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123379190810190613764565b151514612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906140dd565b60405180910390fd5b505050565b61238882826105e5565b6123938233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245957734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561243b57600080fd5b505af115801561244f573d6000803e3d6000fd5b5050505050612531565b6124638282612224565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040161249e919061415d565b602060405180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124f09190810190613808565b14612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279061411d565b60405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561257d57600080fd5b505afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125b591908101906134c1565b90508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b81526004016125f493929190613ec2565b602060405180830381600087803b15801561260e57600080fd5b505af1158015612622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126469190810190613764565b612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c9061407d565b60405180910390fd5b5050505050565b6000828211156126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c89061401d565b60405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612798578173ffffffffffffffffffffffffffffffffffffffff168160405161274e90613e46565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b5050506128e2565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156127de57600080fd5b505afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061281691908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612850929190613ef9565b602060405180830381600087803b15801561286a57600080fd5b505af115801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128a29190810190613764565b6128e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d8906140bd565b60405180910390fd5b5b505050565b600080828401905083811015612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990613f9d565b60405180910390fd5b8091505092915050565b600061294a8383600161303c565b905092915050565b600061295d836130e0565b73ffffffffffffffffffffffffffffffffffffffff16632640f62c836040518263ffffffff1660e01b8152600401612995919061415d565b60206040518083038186803b1580156129ad57600080fd5b505afa1580156129c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e59190810190613808565b905092915050565b6000806129f9856130e0565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401612a36929190613ef9565b602060405180830381600087803b158015612a5057600080fd5b505af1158015612a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a889190810190613764565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b8152600401612ac9939291906141a1565b602060405180830381600087803b158015612ae357600080fd5b505af1158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b1b9190810190613808565b9150509392505050565b6000612b30836130e0565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401612b68919061415d565b60206040518083038186803b158015612b8057600080fd5b505afa158015612b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612bb89190810190613808565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b505afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c4091908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612cb757600080fd5b505afa158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cef919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d6d919081019061378d565b6040518463ffffffff1660e01b8152600401612d8b93929190613f44565b600060405180830381600087803b158015612da557600080fd5b505af1158015612db9573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0a57600080fd5b505afa158015612e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e4291908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612eb957600080fd5b505afa158015612ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ef1919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612f3757600080fd5b505afa158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f6f919081019061378d565b6040518463ffffffff1660e01b8152600401612f8d93929190613f44565b600060405180830381600087803b158015612fa757600080fd5b505af1158015612fbb573d6000803e3d6000fd5b50505050505050565b600061300683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613186565b905092915050565b600061301c838360016129ed565b905092915050565b600061303384848460016131e1565b90509392505050565b6000613047846130e0565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b8152600401613085929190614178565b6020604051808303818588803b15801561309e57600080fd5b505af11580156130b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506130d79190810190613808565b90509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161312f9190613e5b565b60206040518083038186803b15801561314757600080fd5b505afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061317f91908101906134c1565b9050919050565b60008383111582906131ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c59190613f7b565b60405180910390fd5b5060008385039050809150509392505050565b6000806131ee868561300e565b90506131fb85828561303c565b915050949350505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600081359050613278816143d0565b92915050565b60008151905061328d816143d0565b92915050565b6000813590506132a2816143e7565b92915050565b600082601f8301126132b957600080fd5b81356132cc6132c782614205565b6141d8565b915081818352602084019350602081019050838560208402820111156132f157600080fd5b60005b8381101561332157816133078882613269565b8452602084019350602083019250506001810190506132f4565b5050505092915050565b600082601f83011261333c57600080fd5b815161334f61334a8261422d565b6141d8565b9150818183526020840193506020810190508385602084028201111561337457600080fd5b60005b838110156133a4578161338a88826134ac565b845260208401935060208301925050600181019050613377565b5050505092915050565b6000815190506133bd816143fe565b92915050565b6000815190506133d281614415565b92915050565b60008083601f8401126133ea57600080fd5b8235905067ffffffffffffffff81111561340357600080fd5b60208301915083600182028301111561341b57600080fd5b9250929050565b6000815190506134318161442c565b92915050565b60006060828403121561344957600080fd5b61345360606141d8565b9050600061346384828501613269565b600083015250602061347784828501613269565b602083015250604061348b84828501613269565b60408301525092915050565b6000813590506134a681614443565b92915050565b6000815190506134bb81614443565b92915050565b6000602082840312156134d357600080fd5b60006134e18482850161327e565b91505092915050565b600080600080600080600060c0888a03121561350557600080fd5b60006135138a828b01613269565b97505060206135248a828b01613293565b96505060406135358a828b01613269565b95505060606135468a828b01613269565b94505060806135578a828b01613497565b93505060a088013567ffffffffffffffff81111561357457600080fd5b6135808a828b016133d8565b925092505092959891949750929550565b6000806000606084860312156135a657600080fd5b60006135b486828701613269565b93505060206135c586828701613269565b92505060406135d686828701613497565b9150509250925092565b600080600080608085870312156135f657600080fd5b600061360487828801613269565b945050602061361587828801613269565b935050604061362687828801613497565b925050606061363787828801613269565b91505092959194509250565b6000806040838503121561365657600080fd5b600061366485828601613269565b925050602061367585828601613497565b9150509250929050565b6000806000806080858703121561369557600080fd5b60006136a387828801613269565b94505060206136b487828801613497565b93505060406136c587828801613269565b92505060606136d687828801613497565b91505092959194509250565b6000602082840312156136f457600080fd5b600082013567ffffffffffffffff81111561370e57600080fd5b61371a848285016132a8565b91505092915050565b60006020828403121561373557600080fd5b600082015167ffffffffffffffff81111561374f57600080fd5b61375b8482850161332b565b91505092915050565b60006020828403121561377657600080fd5b6000613784848285016133ae565b91505092915050565b60006020828403121561379f57600080fd5b60006137ad848285016133c3565b91505092915050565b6000602082840312156137c857600080fd5b60006137d684828501613422565b91505092915050565b6000606082840312156137f157600080fd5b60006137ff84828501613437565b91505092915050565b60006020828403121561381a57600080fd5b6000613828848285016134ac565b91505092915050565b60008060008060006080868803121561384957600080fd5b600061385788828901613497565b955050602061386888828901613497565b945050604061387988828901613497565b935050606086013567ffffffffffffffff81111561389657600080fd5b6138a2888289016133d8565b92509250509295509295909350565b60006138bd83836138d8565b60208301905092915050565b6138d281614347565b82525050565b6138e1816142d1565b82525050565b6138f0816142d1565b82525050565b600061390182614265565b61390b8185614293565b935061391683614255565b8060005b8381101561394757815161392e88826138b1565b975061393983614286565b92505060018101905061391a565b5085935050505092915050565b61395d81614301565b82525050565b600061396f83856142b5565b935061397c83858461437d565b82840190509392505050565b600061399382614270565b61399d81856142a4565b93506139ad81856020860161438c565b6139b6816143bf565b840191505092915050565b60006139cc82614270565b6139d681856142b5565b93506139e681856020860161438c565b80840191505092915050565b60006139fd8261427b565b613a0781856142c0565b9350613a1781856020860161438c565b613a20816143bf565b840191505092915050565b6000613a38601b836142c0565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613a78601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c656400006000830152602082019050919050565b6000613ab8601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c656400006000830152602082019050919050565b6000613af86029836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613b5e6014836142c0565b91507f736166652d6d6174682d7375622d6661696c65640000000000000000000000006000830152602082019050919050565b6000613b9e601e836142c0565b91507f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c656400006000830152602082019050919050565b6000613bde6023836142c0565b91507f636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d66616960008301527f6c656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c44601e836142c0565b91507f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c656400006000830152602082019050919050565b6000613c84601d836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000613cc46019836142c0565b91507f636d706e642d6d67722d7472616e736665722d6661696c6564000000000000006000830152602082019050919050565b6000613d046000836142b5565b9150600082019050919050565b6000613d1e6020836142c0565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b6000613d5e601d836142c0565b91507f636c6561722d636f6c6c61746572616c2d73616d652d616464726573730000006000830152602082019050919050565b6000613d9e601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c656400006000830152602082019050919050565b6000613dde6017836142c0565b91507f636c6561722d646562742d73616d652d616464726573730000000000000000006000830152602082019050919050565b613e1a8161433d565b82525050565b6000613e2c82866139c1565b9150613e39828486613963565b9150819050949350505050565b6000613e5182613cf7565b9150819050919050565b6000602082019050613e7060008301846138e7565b92915050565b6000608082019050613e8b60008301876138c9565b613e9860208301866138e7565b613ea56040830185613e11565b8181036060830152613eb78184613988565b905095945050505050565b6000606082019050613ed760008301866138e7565b613ee460208301856138e7565b613ef16040830184613e11565b949350505050565b6000604082019050613f0e60008301856138e7565b613f1b6020830184613e11565b9392505050565b60006020820190508181036000830152613f3c81846138f6565b905092915050565b6000606082019050613f596000830186613954565b613f666020830185613954565b613f736040830184613954565b949350505050565b60006020820190508181036000830152613f9581846139f2565b905092915050565b60006020820190508181036000830152613fb681613a2b565b9050919050565b60006020820190508181036000830152613fd681613a6b565b9050919050565b60006020820190508181036000830152613ff681613aab565b9050919050565b6000602082019050818103600083015261401681613aeb565b9050919050565b6000602082019050818103600083015261403681613b51565b9050919050565b6000602082019050818103600083015261405681613b91565b9050919050565b6000602082019050818103600083015261407681613bd1565b9050919050565b6000602082019050818103600083015261409681613c37565b9050919050565b600060208201905081810360008301526140b681613c77565b9050919050565b600060208201905081810360008301526140d681613cb7565b9050919050565b600060208201905081810360008301526140f681613d11565b9050919050565b6000602082019050818103600083015261411681613d51565b9050919050565b6000602082019050818103600083015261413681613d91565b9050919050565b6000602082019050818103600083015261415681613dd1565b9050919050565b60006020820190506141726000830184613e11565b92915050565b600060408201905061418d6000830185613e11565b61419a6020830184613e11565b9392505050565b60006060820190506141b66000830186613e11565b6141c36020830185613e11565b6141d06040830184613e11565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156141fb57600080fd5b8060405250919050565b600067ffffffffffffffff82111561421c57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561424457600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006142dc8261431d565b9050919050565b60006142ee8261431d565b9050919050565b60008115159050919050565b6000819050919050565b6000614316826142d1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061435282614359565b9050919050565b60006143648261436b565b9050919050565b60006143768261431d565b9050919050565b82818337600083830152505050565b60005b838110156143aa57808201518184015260208101905061438f565b838111156143b9576000848401525b50505050565b6000601f19601f8301169050919050565b6143d9816142d1565b81146143e457600080fd5b50565b6143f0816142e3565b81146143fb57600080fd5b50565b614407816142f5565b811461441257600080fd5b50565b61441e81614301565b811461442957600080fd5b50565b6144358161430b565b811461444057600080fd5b50565b61444c8161433d565b811461445757600080fd5b5056fea365627a7a72315820bca4a210997ac10003242cfbaf0c3d19e28510725f51c9d56bc6118d8a896bbf6c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "773:13659:25:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;773:13659:25;;;;;;;", "deployedSourceMap": "773:13659:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:690:16;;;;;;;;;;;;;;;;:::i;:::-;;4686:167;;;;;;;;;;;;;;;;:::i;:::-;;1620:2685:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1620:2685:25;;;;;;;;;;;;;;;;:::i;:::-;;2581:157:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2581:157:16;;;;;;;;;;;;;;;;:::i;:::-;;7718:2211:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7718:2211:25;;;;;;;;;;;;;;;;:::i;:::-;;2252:323:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2252:323:16;;;;;;;;;;;;;;;;:::i;:::-;;3710:227;;;;;;;;;;;;;;;;:::i;:::-;;2744:99;;;:::i;:::-;;3284:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3284:159:16;;;;;;;;;;;;;;;;:::i;:::-;;4283:397;;;;;;;;;;;;;;;;:::i;:::-;;6836:200;;;;;;;;;;;;;;;;:::i;:::-;;3449:255;;;;;;;;;;;;;;;;:::i;:::-;;6206:282;;;;;;;;;;;;;;;;:::i;:::-;;4859:198;;;;;;;;;;;;;;;;:::i;:::-;;6494:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6494:150:16;;;;;;;;;;;;;;;;:::i;:::-;;3943:334;;;;;;;;;;;;;;;;:::i;:::-;;4311:2218:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4311:2218:25;;;;;;;;;;;;;;;;:::i;:::-;;5960:240:16;;;;;;;;;;;;;;;;:::i;:::-;;12741:1689:25;;;;;;;;;;;;;;;;:::i;:::-;;1466:429:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1466:429:16;;;;;;;;;;;;;;;;:::i;:::-;;9994:2741:25;;;;;;;;;;;;;;;;:::i;:::-;;1901:345:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1901:345:16;;;;;;;;;;;;;;;;:::i;:::-;;6650:180;;;;;;;;;;;;;;;;:::i;:::-;;2849:429;;;;;;;;;;;;;;;;:::i;:::-;;5264:690;5407:15;5433:6;5425:25;;;5459:4;5425:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5425:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5425:40:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5425:40:16;;;;;;;;;5407:58;;498:42;5639:23;;:6;:23;;;5635:110;;5678:56;5692:10;5712:4;5719:6;5727;5678:13;:56::i;:::-;5635:110;5754:22;5761:6;5769;5754;:22::i;:::-;5824:13;5848:6;5840:25;;;5874:4;5840:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5840:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5840:40:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5840:40:16;;;;;;;;;5824:56;;5891;5901:6;5909:10;5921:25;5925:8;5935:10;5921:3;:25::i;:::-;5891:9;:56::i;:::-;5264:690;;;;:::o;4686:167::-;4810:1;4778:6;4770:22;;;4793:12;4770:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4770:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4770:36:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4770:36:16;;;;;;;;;:41;4762:84;;;;;;;;;;;;;;;;;;;;;;4686:167;;:::o;1620:2685:25:-;1777:39;;:::i;:::-;1830:5;;1819:42;;;;;;;;;1777:84;;1872:31;1922:10;:33;;;1872:84;;1967:24;1994:10;:27;;;1967:54;;2031:24;2058:10;:27;;;2031:54;;2096:15;2114:43;2144:12;2114:25;2130:8;2114:11;:15;;:25;;;;:::i;:::-;:29;;:43;;;;:::i;:::-;2096:61;;2671:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2671:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2671:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2671:31:25;;;;;;;;;2651:51;;:16;:51;;;2647:673;;;2718:42;2730:16;2748:11;2718;:42::i;:::-;2647:673;;;2843:26;2880:16;2872:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2872:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2872:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2872:38:25;;;;;;;;;2843:67;;2925:29;2957:90;2986:18;3022:11;2957;:90::i;:::-;2925:122;;3122:18;3115:51;;;3167:16;3185:24;3115:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3115:95:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3115:95:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3115:95:25;;;;;;;;;;3254:55;3266:16;3284:24;3254:11;:55::i;:::-;2647:673;;;3484:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3484:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3484:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3484:31:25;;;;;;;;;3464:51;;:16;:51;;;3460:839;;;3531:36;3538:16;3556:10;3531:6;:36::i;:::-;3460:839;;;3639:26;3676:16;3668:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3668:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3668:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3668:38:25;;;;;;;;;3639:67;;3834:29;3866:98;3904:18;3940:10;3866:20;:98::i;:::-;3834:130;;4011:50;4018:16;4036:24;4011:6;:50::i;:::-;4219:69;4231:18;4251:24;4277:10;4219:11;:69::i;:::-;;3460:839;;;1620:2685;;;;;;;;;;:::o;2581:157:16:-;2677:21;2690:7;2677:12;:21::i;:::-;2708:23;2723:7;2708:14;:23::i;:::-;2581:157;:::o;7718:2211:25:-;8332:31;8382:22;8332:73;;8534:18;8587:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8587:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8587:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8587:31:25;;;;;;;;;8567:51;;:16;:51;;;8563:355;;;8650:23;8634:39;;8563:355;;;8776:131;8822:16;8814:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8814:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8814:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8814:38:25;;;;;;;;;8870:23;8776:20;:131::i;:::-;8760:147;;8563:355;9067:53;9164:27;9153:39;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9153:39:25;;;9206:30;;9123:123;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9123:123:25;;;9067:179;;9257:24;9357:15;:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9357:55:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9357:55:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9357:55:25;;;;;;;;;9310:131;;;:133;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9310:133:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9310:133:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9310:133:25;;;;;;;;;9257:196;;9509:56;9527:15;9552:11;9509:17;:56::i;:::-;9623:11;:21;;;9658:15;9687;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9687:32:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9687:32:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9687:32:25;;;;;;;;;9733:13;9760:40;9623:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9623:187:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9623:187:25;;;;9866:56;9884:15;9909:11;9866:17;:56::i;:::-;7718:2211;;;;;;;;;;;:::o;2252:323:16:-;2362:6;2371:1;2362:10;;2357:212;2378:7;:14;2374:1;:18;2357:212;;;498:42;2462:27;;:7;2470:1;2462:10;;;;;;;;;;;;;;:27;;;2458:101;;2509:35;2523:7;2531:1;2523:10;;;;;;;;;;;;;;2540:2;2509:13;:35::i;:::-;2458:101;2394:3;;;;;;;2357:212;;;;2252:323;:::o;3710:227::-;3849:11;:9;:11::i;:::-;3902:28;3909:6;3917:12;3902:6;:28::i;:::-;3710:227;;:::o;2744:99::-;498:42;2790:27;;;2824:9;2790:46;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2790:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2790:46:16;;;;;2744:99::o;3284:159::-;3400:1;3368:6;3360:22;;;3383:12;3360:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3360:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3360:36:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3360:36:16;;;;;;;;;:41;3352:84;;;;;;;;;;;;;;;;;;;;;;3284:159;;:::o;4283:397::-;498:42;4387:23;;:6;:23;;;4383:291;;;4434:6;4426:33;;;4466:6;4474:9;4426:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4426:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4426:58:16;;;;;4383:291;;;4515:29;4529:6;4537;4515:13;:29::i;:::-;4622:1;4574:6;4566:33;;;4600:9;4611:6;4566:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4566:52:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4566:52:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4566:52:16;;;;;;;;;:57;4558:105;;;;;;;;;;;;;;;;;;;;;;4383:291;4283:397;;;:::o;6836:200::-;6950:32;6967:6;6975;6950:16;:32::i;:::-;6992:37;7002:6;7010:10;7022:6;6992:9;:37::i;:::-;6836:200;;:::o;3449:255::-;3619:34;3626:12;3640;3619:6;:34::i;:::-;3663;3670:12;3684;3663:6;:34::i;:::-;3449:255;;;;:::o;6206:282::-;498:42;6322:23;;:6;:23;;;6318:110;;6361:56;6375:10;6395:4;6402:6;6410;6361:13;:56::i;:::-;6318:110;6437:44;6455:9;6466:6;6474;6437:17;:44::i;:::-;6206:282;;;:::o;4859:198::-;5003:1;4961:6;4953:32;;;4986:12;4953:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4953:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4953:46:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4953:46:16;;;;;;;;;:51;4945:105;;;;;;;;;;;;;;;;;;;;;;4859:198;;:::o;6494:150::-;6568:22;6575:6;6583;6568;:22::i;:::-;6600:37;6610:6;6618:10;6630:6;6600:9;:37::i;:::-;6494:150;;:::o;3943:334::-;498:42;4022:23;;:6;:23;;;4018:253;;;4069:6;4061:27;;;4095:6;4061:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4061:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4061:43:16;;;;;4018:253;;;4135:29;4149:6;4157;4135:13;:29::i;:::-;4225:1;4194:6;4186:27;;;4214:6;4186:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4186:35:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4186:35:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4186:35:16;;;;;;;;;:40;4178:82;;;;;;;;;;;;;;;;;;;;;;4018:253;3943:334;;:::o;4311:2218:25:-;4474:39;;:::i;:::-;4527:5;;4516:42;;;;;;;;;4474:84;;4569:31;4619:10;:33;;;4569:84;;4664:24;4691:10;:27;;;4664:54;;4728:24;4755:10;:27;;;4728:54;;5211:16;5230:43;5260:12;5230:25;5246:8;5230:11;:15;;:25;;;;:::i;:::-;:29;;:43;;;;:::i;:::-;5211:62;;5308:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5308:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5308:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5308:31:25;;;;;;;;;5288:51;;:16;:51;;;5284:538;;;5355:37;5362:16;5380:11;5355:6;:37::i;:::-;5284:538;;;5507:26;5544:16;5536:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5536:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5536:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5536:38:25;;;;;;;;;5507:67;;5588:29;5620:90;5649:18;5685:11;5620;:90::i;:::-;5588:122;;5761:50;5768:16;5786:24;5761:6;:50::i;:::-;5284:538;;;5914:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5914:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5914:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5914:31:25;;;;;;;;;5894:51;;:16;:51;;;5890:633;;;5961:47;5978:16;5996:11;5961:16;:47::i;:::-;5890:633;;;6120:26;6157:16;6149:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6149:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6149:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6149:38:25;;;;;;;;;6120:67;;6201:29;6233:53;6254:18;6274:11;6233:20;:53::i;:::-;6201:85;;6329:60;6346:16;6364:24;6329:16;:60::i;:::-;6442:70;6454:18;6474:24;6500:11;6442;:70::i;:::-;;5890:633;;;4311:2218;;;;;;;;;;:::o;5960:240:16:-;498:42;6051:23;;:6;:23;;;6047:110;;6090:56;6104:10;6124:4;6131:6;6139;6090:13;:56::i;:::-;6047:110;6166:27;6178:6;6186;6166:11;:27::i;:::-;5960:240;;:::o;12741:1689:25:-;13312:16;13292:36;;:16;:36;;;;13284:78;;;;;;;;;;;;;;;;;;;;;;13373:17;13400:31;13450:22;13400:73;;13514:60;13531:16;13549:24;13514:16;:60::i;:::-;13609:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13609:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13609:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13609:31:25;;;;;;;;;13589:51;;:16;:51;;;13585:759;;;13699:123;13736:16;13728:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13728:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13728:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13728:38:25;;;;;;;;;13784:24;13699:11;:123::i;:::-;13684:138;;13585:759;;;13863:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13863:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13863:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13863:31:25;;;;;;;;;13843:51;;:16;:51;;;13839:505;;;13953:123;13990:16;13982:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13982:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13982:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13982:38:25;;;;;;;;;14038:24;13953:11;:123::i;:::-;13938:138;;13839:505;;;14152:181;14191:16;14183:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14183:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14183:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14183:38:25;;;;;;;;;14247:16;14239:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14239:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14239:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14239:38:25;;;;;;;;;14295:24;14152:13;:181::i;:::-;14137:196;;13839:505;13585:759;14385:38;14392:16;14410:12;14385:6;:38::i;:::-;12741:1689;;;;;;:::o;1466:429:16:-;1670:20;417:42;1693:53;;;1747:7;1693:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1693:62:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:62:16;;;;;;39:16:-1;36:1;17:17;2:54;1693:62:16;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1693:62:16;;;;;;;;;1670:85;;1771:6;1780:1;1771:10;;1766:123;1787:6;:13;1783:1;:17;1766:123;;;1842:1;1829:6;1836:1;1829:9;;;;;;;;;;;;;;:14;1821:57;;;;;;;;;;;;;;;;;;;;;;1802:3;;;;;;;1766:123;;;;1466:429;;:::o;9994:2741:25:-;10533:16;10513:36;;:16;:36;;;;10505:72;;;;;;;;;;;;;;;;;;;;;;10588:31;10638:22;10588:73;;10672:17;10699:26;10735;10796:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10796:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10796:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10796:31:25;;;;;;;;;10776:51;;:16;:51;;;10772:1860;;;10900:16;10892:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10892:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10892:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10892:38:25;;;;;;;;;10871:59;;11010:70;11031:18;11051:28;11010:20;:70::i;:::-;10995:85;;11139:38;11146:16;11164:12;11139:6;:38::i;:::-;11229:75;11241:18;11261:12;11275:28;11229:11;:75::i;:::-;;10772:1860;;;11345:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11345:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11345:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11345:31:25;;;;;;;;;11325:51;;:16;:51;;;11321:1311;;;11449:16;11441:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11441:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11441:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11441:38:25;;;;;;;;;11420:59;;11559:70;11580:18;11600:28;11559:20;:70::i;:::-;11544:85;;11686:38;11693:16;11711:12;11686:6;:38::i;:::-;11776:75;11788:18;11808:12;11822:28;11776:11;:75::i;:::-;;11321:1311;;;11941:16;11933:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11933:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11933:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11933:38:25;;;;;;;;;11912:59;;12014:16;12006:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12006:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12006:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12006:38:25;;;;;;;;;11985:59;;12103:14;12120:70;12141:18;12161:28;12120:20;:70::i;:::-;12103:87;;12266:51;12287:18;12307:9;12266:20;:51::i;:::-;12251:66;;12376:38;12383:16;12401:12;12376:6;:38::i;:::-;12479:56;12491:18;12511:12;12525:9;12479:11;:56::i;:::-;;12549:72;12561:18;12581:9;12592:28;12549:11;:72::i;:::-;;11321:1311;;10772:1860;12669:59;12681:16;12699:28;12669:11;:59::i;:::-;9994:2741;;;;;;;;:::o;1901:345:16:-;2051:18;2080:6;2072:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2072:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2072:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2072:28:16;;;;;;;;;2051:49;;2177:4;2131:50;;2138:10;2131:26;;;2158:6;2166;2131:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:42:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:42:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2131:42:16;;;;;;;;;:50;;;2110:129;;;;;;;;;;;;;;;;;;;;;;1901:345;;;:::o;6650:180::-;6754:22;6761:6;6769;6754;:22::i;:::-;6786:37;6796:6;6804:10;6816:6;6786:9;:37::i;:::-;6650:180;;:::o;2849:429::-;498:42;2923:23;;:6;:23;;;2919:353;;;498:42;2962:27;;;2996:6;2962:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2962:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2962:43:16;;;;;2919:353;;;3099:29;3113:6;3121;3099:13;:29::i;:::-;3198:1;3174:6;3166:20;;;3187:6;3166:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3166:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3166:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3166:28:16;;;;;;;;;:33;3143:118;;;;;;;;;;;;;;;;;;;;;;2919:353;2849:429;;:::o;722:345::-;866:18;895:6;887:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;887:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;887:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;887:28:16;;;;;;;;;866:49;;953:10;946:31;;;978:6;986:9;997:6;946:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;946:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;946:58:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;946:58:16;;;;;;;;;925:135;;;;;;;;;;;;;;;;;;;;;;722:345;;;;;:::o;547:169::-;605:7;637:1;632;:6;;624:39;;;;;;;;;;;;;;;;;;;;;;673:9;689:1;685;:5;673:17;;708:1;701:8;;;547:169;;;;:::o;1073:387::-;498:42;1193:23;;:6;:23;;;1189:265;;;1232:9;:14;;1253:6;1232:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1232:32:16;;1189:265;;;1335:6;1327:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1327:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1327:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1327:28:16;;;;;;;;;1320:45;;;1366:9;1377:6;1320:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1320:64:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1320:64:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1320:64:16;;;;;;;;;1295:148;;;;;;;;;;;;;;;;;;;;;;1189:265;1073:387;;;:::o;834:176:32:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;514:160:24:-;599:4;622:45;634:12;648:9;664:1;622:11;:45::i;:::-;615:52;;514:160;;;;:::o;2311:208::-;2402:4;2442:33;2462:12;2442:19;:33::i;:::-;2425:76;;;2502:9;2425:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2425:87:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2425:87:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2425:87:24;;;;;;;;;2418:94;;2311:208;;;;:::o;1117:355::-;1215:4;1231:16;1250:33;1270:12;1250:19;:33::i;:::-;1231:52;;1301:12;1294:28;;;1323:8;1333:11;1294:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1294:51:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1294:51:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1294:51:24;;;;;;;;;;1380:8;1363:59;;;1423:11;1436:12;1461:2;1455:3;:8;1363:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1363:102:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1363:102:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1363:102:24;;;;;;;;;1356:109;;;1117:355;;;;;:::o;2525:212::-;2618:4;2658:33;2678:12;2658:19;:33::i;:::-;2641:76;;;2718:11;2641:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2641:89:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2641:89:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2641:89:24;;;;;;;;;2634:96;;2525:212;;;;:::o;1022:293:25:-;1111:9;1140:12;1131:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1131:34:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1131:34:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1131:34:25;;;;;;;;;1111:55;;1185:1;1177:17;;;1232:3;1216:21;;1208:30;;;1260:1;1252:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1252:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1252:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1252:16:25;;;;;;;;;1290:1;1282:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1282:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1282:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1282:16:25;;;;;;;;;1177:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1177:131:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1177:131:25;;;;1022:293;;;:::o;1321:::-;1410:9;1439:12;1430:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1430:34:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1430:34:25;;;;;;;;;1410:55;;1484:1;1476:17;;;1531:3;1515:21;;1507:30;;;1559:1;1551:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1551:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1551:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1551:16:25;;;;;;;;;1589:1;1581:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1581:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1581:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1581:16:25;;;;;;;;;1476:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1476:131:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1476:131:25;;;;1321:293;;;:::o;1274:134:32:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;955:156:24:-;1034:4;1057:47;1069:12;1083:11;1101:1;1057:11;:47::i;:::-;1050:54;;955:156;;;;:::o;1717:160::-;1802:4;1825:45;1839:4;1845:2;1849:11;1867:1;1825:13;:45::i;:::-;1818:52;;1717:160;;;;;:::o;680:269::-;786:4;826:33;846:12;826:19;:33::i;:::-;809:84;;;900:9;911:14;938:2;932:3;:8;809:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;809:133:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;809:133:24;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;809:133:24;;;;;;;;;802:140;;680:269;;;;;:::o;337:171::-;411:7;288:42;437:50;;;488:12;437:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;437:64:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;437:64:24;;;;;;;;;430:71;;337:171;;;:::o;1732:187:32:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;1478:233:24:-;1583:4;1599:14;1616:32;1628:4;1634:13;1616:11;:32::i;:::-;1599:49;;1665:39;1677:2;1681:9;1692:11;1665;:39::i;:::-;1658:46;;;1478:233;;;;;;:::o;773:13659:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:146;;371:6;358:20;349:29;;383:41;418:5;383:41;;;343:86;;;;;454:707;;571:3;564:4;556:6;552:17;548:27;538:2;;589:1;586;579:12;538:2;626:6;613:20;648:80;663:64;720:6;663:64;;;648:80;;;639:89;;745:5;770:6;763:5;756:21;800:4;792:6;788:17;778:27;;822:4;817:3;813:14;806:21;;875:6;922:3;914:4;906:6;902:17;897:3;893:27;890:36;887:2;;;939:1;936;929:12;887:2;964:1;949:206;974:6;971:1;968:13;949:206;;;1032:3;1054:37;1087:3;1075:10;1054:37;;;1049:3;1042:50;1115:4;1110:3;1106:14;1099:21;;1143:4;1138:3;1134:14;1127:21;;1006:149;996:1;993;989:9;984:14;;949:206;;;953:14;531:630;;;;;;;;1187:722;;1315:3;1308:4;1300:6;1296:17;1292:27;1282:2;;1333:1;1330;1323:12;1282:2;1363:6;1357:13;1385:80;1400:64;1457:6;1400:64;;;1385:80;;;1376:89;;1482:5;1507:6;1500:5;1493:21;1537:4;1529:6;1525:17;1515:27;;1559:4;1554:3;1550:14;1543:21;;1612:6;1659:3;1651:4;1643:6;1639:17;1634:3;1630:27;1627:36;1624:2;;;1676:1;1673;1666:12;1624:2;1701:1;1686:217;1711:6;1708:1;1705:13;1686:217;;;1769:3;1791:48;1835:3;1823:10;1791:48;;;1786:3;1779:61;1863:4;1858:3;1854:14;1847:21;;1891:4;1886:3;1882:14;1875:21;;1743:160;1733:1;1730;1726:9;1721:14;;1686:217;;;1690:14;1275:634;;;;;;;;1917:128;;1998:6;1992:13;1983:22;;2010:30;2034:5;2010:30;;;1977:68;;;;;2052:134;;2136:6;2130:13;2121:22;;2148:33;2175:5;2148:33;;;2115:71;;;;;2207:336;;;2321:3;2314:4;2306:6;2302:17;2298:27;2288:2;;2339:1;2336;2329:12;2288:2;2372:6;2359:20;2349:30;;2399:18;2391:6;2388:30;2385:2;;;2431:1;2428;2421:12;2385:2;2465:4;2457:6;2453:17;2441:29;;2516:3;2508:4;2500:6;2496:17;2486:8;2482:32;2479:41;2476:2;;;2533:1;2530;2523:12;2476:2;2281:262;;;;;;2551:174;;2655:6;2649:13;2640:22;;2667:53;2714:5;2667:53;;;2634:91;;;;;2788:663;;2912:4;2900:9;2895:3;2891:19;2887:30;2884:2;;;2930:1;2927;2920:12;2884:2;2948:20;2963:4;2948:20;;;2939:29;;3036:1;3068:49;3113:3;3104:6;3093:9;3089:22;3068:49;;;3061:4;3054:5;3050:16;3043:75;2978:151;3191:2;3224:49;3269:3;3260:6;3249:9;3245:22;3224:49;;;3217:4;3210:5;3206:16;3199:75;3139:146;3347:2;3380:49;3425:3;3416:6;3405:9;3401:22;3380:49;;;3373:4;3366:5;3362:16;3355:75;3295:146;2878:573;;;;;3458:130;;3538:6;3525:20;3516:29;;3550:33;3577:5;3550:33;;;3510:78;;;;;3595:134;;3679:6;3673:13;3664:22;;3691:33;3718:5;3691:33;;;3658:71;;;;;3736:263;;3851:2;3839:9;3830:7;3826:23;3822:32;3819:2;;;3867:1;3864;3857:12;3819:2;3902:1;3919:64;3975:7;3966:6;3955:9;3951:22;3919:64;;;3909:74;;3881:108;3813:186;;;;;4006:1009;;;;;;;;4222:3;4210:9;4201:7;4197:23;4193:33;4190:2;;;4239:1;4236;4229:12;4190:2;4274:1;4291:53;4336:7;4327:6;4316:9;4312:22;4291:53;;;4281:63;;4253:97;4381:2;4399:61;4452:7;4443:6;4432:9;4428:22;4399:61;;;4389:71;;4360:106;4497:2;4515:53;4560:7;4551:6;4540:9;4536:22;4515:53;;;4505:63;;4476:98;4605:2;4623:53;4668:7;4659:6;4648:9;4644:22;4623:53;;;4613:63;;4584:98;4713:3;4732:53;4777:7;4768:6;4757:9;4753:22;4732:53;;;4722:63;;4692:99;4850:3;4839:9;4835:19;4822:33;4875:18;4867:6;4864:30;4861:2;;;4907:1;4904;4897:12;4861:2;4935:64;4991:7;4982:6;4971:9;4967:22;4935:64;;;4925:74;;;;4801:204;4184:831;;;;;;;;;;;5022:491;;;;5160:2;5148:9;5139:7;5135:23;5131:32;5128:2;;;5176:1;5173;5166:12;5128:2;5211:1;5228:53;5273:7;5264:6;5253:9;5249:22;5228:53;;;5218:63;;5190:97;5318:2;5336:53;5381:7;5372:6;5361:9;5357:22;5336:53;;;5326:63;;5297:98;5426:2;5444:53;5489:7;5480:6;5469:9;5465:22;5444:53;;;5434:63;;5405:98;5122:391;;;;;;5520:617;;;;;5675:3;5663:9;5654:7;5650:23;5646:33;5643:2;;;5692:1;5689;5682:12;5643:2;5727:1;5744:53;5789:7;5780:6;5769:9;5765:22;5744:53;;;5734:63;;5706:97;5834:2;5852:53;5897:7;5888:6;5877:9;5873:22;5852:53;;;5842:63;;5813:98;5942:2;5960:53;6005:7;5996:6;5985:9;5981:22;5960:53;;;5950:63;;5921:98;6050:2;6068:53;6113:7;6104:6;6093:9;6089:22;6068:53;;;6058:63;;6029:98;5637:500;;;;;;;;6144:366;;;6265:2;6253:9;6244:7;6240:23;6236:32;6233:2;;;6281:1;6278;6271:12;6233:2;6316:1;6333:53;6378:7;6369:6;6358:9;6354:22;6333:53;;;6323:63;;6295:97;6423:2;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;;;6431:63;;6402:98;6227:283;;;;;;6517:617;;;;;6672:3;6660:9;6651:7;6647:23;6643:33;6640:2;;;6689:1;6686;6679:12;6640:2;6724:1;6741:53;6786:7;6777:6;6766:9;6762:22;6741:53;;;6731:63;;6703:97;6831:2;6849:53;6894:7;6885:6;6874:9;6870:22;6849:53;;;6839:63;;6810:98;6939:2;6957:53;7002:7;6993:6;6982:9;6978:22;6957:53;;;6947:63;;6918:98;7047:2;7065:53;7110:7;7101:6;7090:9;7086:22;7065:53;;;7055:63;;7026:98;6634:500;;;;;;;;7141:377;;7270:2;7258:9;7249:7;7245:23;7241:32;7238:2;;;7286:1;7283;7276:12;7238:2;7349:1;7338:9;7334:17;7321:31;7372:18;7364:6;7361:30;7358:2;;;7404:1;7401;7394:12;7358:2;7424:78;7494:7;7485:6;7474:9;7470:22;7424:78;;;7414:88;;7300:208;7232:286;;;;;7525:392;;7665:2;7653:9;7644:7;7640:23;7636:32;7633:2;;;7681:1;7678;7671:12;7633:2;7737:1;7726:9;7722:17;7716:24;7760:18;7752:6;7749:30;7746:2;;;7792:1;7789;7782:12;7746:2;7812:89;7893:7;7884:6;7873:9;7869:22;7812:89;;;7802:99;;7695:212;7627:290;;;;;7924:257;;8036:2;8024:9;8015:7;8011:23;8007:32;8004:2;;;8052:1;8049;8042:12;8004:2;8087:1;8104:61;8157:7;8148:6;8137:9;8133:22;8104:61;;;8094:71;;8066:105;7998:183;;;;;8188:263;;8303:2;8291:9;8282:7;8278:23;8274:32;8271:2;;;8319:1;8316;8309:12;8271:2;8354:1;8371:64;8427:7;8418:6;8407:9;8403:22;8371:64;;;8361:74;;8333:108;8265:186;;;;;8458:303;;8593:2;8581:9;8572:7;8568:23;8564:32;8561:2;;;8609:1;8606;8599:12;8561:2;8644:1;8661:84;8737:7;8728:6;8717:9;8713:22;8661:84;;;8651:94;;8623:128;8555:206;;;;;8768:311;;8907:2;8895:9;8886:7;8882:23;8878:32;8875:2;;;8923:1;8920;8913:12;8875:2;8958:1;8975:88;9055:7;9046:6;9035:9;9031:22;8975:88;;;8965:98;;8937:132;8869:210;;;;;9086:263;;9201:2;9189:9;9180:7;9176:23;9172:32;9169:2;;;9217:1;9214;9207:12;9169:2;9252:1;9269:64;9325:7;9316:6;9305:9;9301:22;9269:64;;;9259:74;;9231:108;9163:186;;;;;9356:741;;;;;;9530:3;9518:9;9509:7;9505:23;9501:33;9498:2;;;9547:1;9544;9537:12;9498:2;9582:1;9599:53;9644:7;9635:6;9624:9;9620:22;9599:53;;;9589:63;;9561:97;9689:2;9707:53;9752:7;9743:6;9732:9;9728:22;9707:53;;;9697:63;;9668:98;9797:2;9815:53;9860:7;9851:6;9840:9;9836:22;9815:53;;;9805:63;;9776:98;9933:2;9922:9;9918:18;9905:32;9957:18;9949:6;9946:30;9943:2;;;9989:1;9986;9979:12;9943:2;10017:64;10073:7;10064:6;10053:9;10049:22;10017:64;;;10007:74;;;;9884:203;9492:605;;;;;;;;;10105:173;;10192:46;10234:3;10226:6;10192:46;;;10267:4;10262:3;10258:14;10244:28;;10185:93;;;;;10286:142;10377:45;10416:5;10377:45;;;10372:3;10365:58;10359:69;;;10435:103;10508:24;10526:5;10508:24;;;10503:3;10496:37;10490:48;;;10545:113;10628:24;10646:5;10628:24;;;10623:3;10616:37;10610:48;;;10696:690;;10841:54;10889:5;10841:54;;;10908:86;10987:6;10982:3;10908:86;;;10901:93;;11015:56;11065:5;11015:56;;;11091:7;11119:1;11104:260;11129:6;11126:1;11123:13;11104:260;;;11196:6;11190:13;11217:63;11276:3;11261:13;11217:63;;;11210:70;;11297:60;11350:6;11297:60;;;11287:70;;11161:203;11151:1;11148;11144:9;11139:14;;11104:260;;;11108:14;11377:3;11370:10;;10820:566;;;;;;;;11394:113;11477:24;11495:5;11477:24;;;11472:3;11465:37;11459:48;;;11537:310;;11669:88;11750:6;11745:3;11669:88;;;11662:95;;11769:43;11805:6;11800:3;11793:5;11769:43;;;11834:6;11829:3;11825:16;11818:23;;11655:192;;;;;;11855:343;;11965:38;11997:5;11965:38;;;12015:70;12078:6;12073:3;12015:70;;;12008:77;;12090:52;12135:6;12130:3;12123:4;12116:5;12112:16;12090:52;;;12163:29;12185:6;12163:29;;;12158:3;12154:39;12147:46;;11945:253;;;;;;12205:356;;12333:38;12365:5;12333:38;;;12383:88;12464:6;12459:3;12383:88;;;12376:95;;12476:52;12521:6;12516:3;12509:4;12502:5;12498:16;12476:52;;;12549:6;12544:3;12540:16;12533:23;;12313:248;;;;;;12568:347;;12680:39;12713:5;12680:39;;;12731:71;12795:6;12790:3;12731:71;;;12724:78;;12807:52;12852:6;12847:3;12840:4;12833:5;12829:16;12807:52;;;12880:29;12902:6;12880:29;;;12875:3;12871:39;12864:46;;12660:255;;;;;;12923:327;;13083:67;13147:2;13142:3;13083:67;;;13076:74;;13183:29;13179:1;13174:3;13170:11;13163:50;13241:2;13236:3;13232:12;13225:19;;13069:181;;;;13259:330;;13419:67;13483:2;13478:3;13419:67;;;13412:74;;13519:32;13515:1;13510:3;13506:11;13499:53;13580:2;13575:3;13571:12;13564:19;;13405:184;;;;13598:330;;13758:67;13822:2;13817:3;13758:67;;;13751:74;;13858:32;13854:1;13849:3;13845:11;13838:53;13919:2;13914:3;13910:12;13903:19;;13744:184;;;;13937:378;;14097:67;14161:2;14156:3;14097:67;;;14090:74;;14197:34;14193:1;14188:3;14184:11;14177:55;14266:11;14261:2;14256:3;14252:12;14245:33;14306:2;14301:3;14297:12;14290:19;;14083:232;;;;14324:320;;14484:67;14548:2;14543:3;14484:67;;;14477:74;;14584:22;14580:1;14575:3;14571:11;14564:43;14635:2;14630:3;14626:12;14619:19;;14470:174;;;;14653:330;;14813:67;14877:2;14872:3;14813:67;;;14806:74;;14913:32;14909:1;14904:3;14900:11;14893:53;14974:2;14969:3;14965:12;14958:19;;14799:184;;;;14992:372;;15152:67;15216:2;15211:3;15152:67;;;15145:74;;15252:34;15248:1;15243:3;15239:11;15232:55;15321:5;15316:2;15311:3;15307:12;15300:27;15355:2;15350:3;15346:12;15339:19;;15138:226;;;;15373:330;;15533:67;15597:2;15592:3;15533:67;;;15526:74;;15633:32;15629:1;15624:3;15620:11;15613:53;15694:2;15689:3;15685:12;15678:19;;15519:184;;;;15712:329;;15872:67;15936:2;15931:3;15872:67;;;15865:74;;15972:31;15968:1;15963:3;15959:11;15952:52;16032:2;16027:3;16023:12;16016:19;;15858:183;;;;16050:325;;16210:67;16274:2;16269:3;16210:67;;;16203:74;;16310:27;16306:1;16301:3;16297:11;16290:48;16366:2;16361:3;16357:12;16350:19;;16196:179;;;;16384:296;;16561:83;16642:1;16637:3;16561:83;;;16554:90;;16672:1;16667:3;16663:11;16656:18;;16547:133;;;;16689:332;;16849:67;16913:2;16908:3;16849:67;;;16842:74;;16949:34;16945:1;16940:3;16936:11;16929:55;17012:2;17007:3;17003:12;16996:19;;16835:186;;;;17030:329;;17190:67;17254:2;17249:3;17190:67;;;17183:74;;17290:31;17286:1;17281:3;17277:11;17270:52;17350:2;17345:3;17341:12;17334:19;;17176:183;;;;17368:330;;17528:67;17592:2;17587:3;17528:67;;;17521:74;;17628:32;17624:1;17619:3;17615:11;17608:53;17689:2;17684:3;17680:12;17673:19;;17514:184;;;;17707:323;;17867:67;17931:2;17926:3;17867:67;;;17860:74;;17967:25;17963:1;17958:3;17954:11;17947:46;18021:2;18016:3;18012:12;18005:19;;17853:177;;;;18038:113;18121:24;18139:5;18121:24;;;18116:3;18109:37;18103:48;;;18158:439;;18358:93;18447:3;18438:6;18358:93;;;18351:100;;18469:103;18568:3;18559:6;18551;18469:103;;;18462:110;;18589:3;18582:10;;18339:258;;;;;;;18604:370;;18802:147;18945:3;18802:147;;;18795:154;;18966:3;18959:10;;18783:191;;;;18981:213;;19099:2;19088:9;19084:18;19076:26;;19113:71;19181:1;19170:9;19166:17;19157:6;19113:71;;;19070:124;;;;;19201:647;;19429:3;19418:9;19414:19;19406:27;;19444:79;19520:1;19509:9;19505:17;19496:6;19444:79;;;19534:72;19602:2;19591:9;19587:18;19578:6;19534:72;;;19617;19685:2;19674:9;19670:18;19661:6;19617:72;;;19737:9;19731:4;19727:20;19722:2;19711:9;19707:18;19700:48;19762:76;19833:4;19824:6;19762:76;;;19754:84;;19400:448;;;;;;;;19855:435;;20029:2;20018:9;20014:18;20006:26;;20043:71;20111:1;20100:9;20096:17;20087:6;20043:71;;;20125:72;20193:2;20182:9;20178:18;20169:6;20125:72;;;20208;20276:2;20265:9;20261:18;20252:6;20208:72;;;20000:290;;;;;;;20297:324;;20443:2;20432:9;20428:18;20420:26;;20457:71;20525:1;20514:9;20510:17;20501:6;20457:71;;;20539:72;20607:2;20596:9;20592:18;20583:6;20539:72;;;20414:207;;;;;;20628:361;;20796:2;20785:9;20781:18;20773:26;;20846:9;20840:4;20836:20;20832:1;20821:9;20817:17;20810:47;20871:108;20974:4;20965:6;20871:108;;;20863:116;;20767:222;;;;;20996:435;;21170:2;21159:9;21155:18;21147:26;;21184:71;21252:1;21241:9;21237:17;21228:6;21184:71;;;21266:72;21334:2;21323:9;21319:18;21310:6;21266:72;;;21349;21417:2;21406:9;21402:18;21393:6;21349:72;;;21141:290;;;;;;;21438:301;;21576:2;21565:9;21561:18;21553:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21651:78;21724:4;21715:6;21651:78;;;21643:86;;21547:192;;;;;21746:407;;21937:2;21926:9;21922:18;21914:26;;21987:9;21981:4;21977:20;21973:1;21962:9;21958:17;21951:47;22012:131;22138:4;22012:131;;;22004:139;;21908:245;;;;22160:407;;22351:2;22340:9;22336:18;22328:26;;22401:9;22395:4;22391:20;22387:1;22376:9;22372:17;22365:47;22426:131;22552:4;22426:131;;;22418:139;;22322:245;;;;22574:407;;22765:2;22754:9;22750:18;22742:26;;22815:9;22809:4;22805:20;22801:1;22790:9;22786:17;22779:47;22840:131;22966:4;22840:131;;;22832:139;;22736:245;;;;22988:407;;23179:2;23168:9;23164:18;23156:26;;23229:9;23223:4;23219:20;23215:1;23204:9;23200:17;23193:47;23254:131;23380:4;23254:131;;;23246:139;;23150:245;;;;23402:407;;23593:2;23582:9;23578:18;23570:26;;23643:9;23637:4;23633:20;23629:1;23618:9;23614:17;23607:47;23668:131;23794:4;23668:131;;;23660:139;;23564:245;;;;23816:407;;24007:2;23996:9;23992:18;23984:26;;24057:9;24051:4;24047:20;24043:1;24032:9;24028:17;24021:47;24082:131;24208:4;24082:131;;;24074:139;;23978:245;;;;24230:407;;24421:2;24410:9;24406:18;24398:26;;24471:9;24465:4;24461:20;24457:1;24446:9;24442:17;24435:47;24496:131;24622:4;24496:131;;;24488:139;;24392:245;;;;24644:407;;24835:2;24824:9;24820:18;24812:26;;24885:9;24879:4;24875:20;24871:1;24860:9;24856:17;24849:47;24910:131;25036:4;24910:131;;;24902:139;;24806:245;;;;25058:407;;25249:2;25238:9;25234:18;25226:26;;25299:9;25293:4;25289:20;25285:1;25274:9;25270:17;25263:47;25324:131;25450:4;25324:131;;;25316:139;;25220:245;;;;25472:407;;25663:2;25652:9;25648:18;25640:26;;25713:9;25707:4;25703:20;25699:1;25688:9;25684:17;25677:47;25738:131;25864:4;25738:131;;;25730:139;;25634:245;;;;25886:407;;26077:2;26066:9;26062:18;26054:26;;26127:9;26121:4;26117:20;26113:1;26102:9;26098:17;26091:47;26152:131;26278:4;26152:131;;;26144:139;;26048:245;;;;26300:407;;26491:2;26480:9;26476:18;26468:26;;26541:9;26535:4;26531:20;26527:1;26516:9;26512:17;26505:47;26566:131;26692:4;26566:131;;;26558:139;;26462:245;;;;26714:407;;26905:2;26894:9;26890:18;26882:26;;26955:9;26949:4;26945:20;26941:1;26930:9;26926:17;26919:47;26980:131;27106:4;26980:131;;;26972:139;;26876:245;;;;27128:407;;27319:2;27308:9;27304:18;27296:26;;27369:9;27363:4;27359:20;27355:1;27344:9;27340:17;27333:47;27394:131;27520:4;27394:131;;;27386:139;;27290:245;;;;27542:213;;27660:2;27649:9;27645:18;27637:26;;27674:71;27742:1;27731:9;27727:17;27718:6;27674:71;;;27631:124;;;;;27762:324;;27908:2;27897:9;27893:18;27885:26;;27922:71;27990:1;27979:9;27975:17;27966:6;27922:71;;;28004:72;28072:2;28061:9;28057:18;28048:6;28004:72;;;27879:207;;;;;;28093:435;;28267:2;28256:9;28252:18;28244:26;;28281:71;28349:1;28338:9;28334:17;28325:6;28281:71;;;28363:72;28431:2;28420:9;28416:18;28407:6;28363:72;;;28446;28514:2;28503:9;28499:18;28490:6;28446:72;;;28238:290;;;;;;;28535:256;;28597:2;28591:9;28581:19;;28635:4;28627:6;28623:17;28734:6;28722:10;28719:22;28698:18;28686:10;28683:34;28680:62;28677:2;;;28755:1;28752;28745:12;28677:2;28775:10;28771:2;28764:22;28575:216;;;;;28798:304;;28957:18;28949:6;28946:30;28943:2;;;28989:1;28986;28979:12;28943:2;29024:4;29016:6;29012:17;29004:25;;29087:4;29081;29077:15;29069:23;;28880:222;;;;29109:304;;29268:18;29260:6;29257:30;29254:2;;;29300:1;29297;29290:12;29254:2;29335:4;29327:6;29323:17;29315:25;;29398:4;29392;29388:15;29380:23;;29191:222;;;;29420:151;;29506:3;29498:11;;29544:4;29539:3;29535:14;29527:22;;29492:79;;;;29578:137;;29687:5;29681:12;29671:22;;29652:63;;;;29722:121;;29815:5;29809:12;29799:22;;29780:63;;;;29850:122;;29944:5;29938:12;29928:22;;29909:63;;;;29979:108;;30077:4;30072:3;30068:14;30060:22;;30054:33;;;;30095:178;;30225:6;30220:3;30213:19;30262:4;30257:3;30253:14;30238:29;;30206:67;;;;;30282:162;;30396:6;30391:3;30384:19;30433:4;30428:3;30424:14;30409:29;;30377:67;;;;;30453:144;;30588:3;30573:18;;30566:31;;;;;30606:163;;30721:6;30716:3;30709:19;30758:4;30753:3;30749:14;30734:29;;30702:67;;;;;30777:91;;30839:24;30857:5;30839:24;;;30828:35;;30822:46;;;;30875:99;;30945:24;30963:5;30945:24;;;30934:35;;30928:46;;;;30981:85;;31054:5;31047:13;31040:21;31029:32;;31023:43;;;;31073:72;;31135:5;31124:16;;31118:27;;;;31152:111;;31234:24;31252:5;31234:24;;;31223:35;;31217:46;;;;31270:121;;31343:42;31336:5;31332:54;31321:65;;31315:76;;;;31398:72;;31460:5;31449:16;;31443:27;;;;31477:129;;31564:37;31595:5;31564:37;;;31551:50;;31545:61;;;;31613:121;;31692:37;31723:5;31692:37;;;31679:50;;31673:61;;;;31741:108;;31820:24;31838:5;31820:24;;;31807:37;;31801:48;;;;31857:145;31938:6;31933:3;31928;31915:30;31994:1;31985:6;31980:3;31976:16;31969:27;31908:94;;;;32011:268;32076:1;32083:101;32097:6;32094:1;32091:13;32083:101;;;32173:1;32168:3;32164:11;32158:18;32154:1;32149:3;32145:11;32138:39;32119:2;32116:1;32112:10;32107:15;;32083:101;;;32199:6;32196:1;32193:13;32190:2;;;32264:1;32255:6;32250:3;32246:16;32239:27;32190:2;32060:219;;;;;32287:97;;32375:2;32371:7;32366:2;32359:5;32355:14;32351:28;32341:38;;32335:49;;;;32392:117;32461:24;32479:5;32461:24;;;32454:5;32451:35;32441:2;;32500:1;32497;32490:12;32441:2;32435:74;;32516:133;32593:32;32619:5;32593:32;;;32586:5;32583:43;32573:2;;32640:1;32637;32630:12;32573:2;32567:82;;32656:111;32722:21;32737:5;32722:21;;;32715:5;32712:32;32702:2;;32758:1;32755;32748:12;32702:2;32696:71;;32774:117;32843:24;32861:5;32843:24;;;32836:5;32833:35;32823:2;;32882:1;32879;32872:12;32823:2;32817:74;;32898:157;32987:44;33025:5;32987:44;;;32980:5;32977:55;32967:2;;33046:1;33043;33036:12;32967:2;32961:94;;33062:117;33131:24;33149:5;33131:24;;;33124:5;33121:35;33111:2;;33170:1;33167;33160:12;33111:2;33105:74;", "source": "/*\n Dedge's Aave and Compound manager\n*/\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\n\nimport \"../lib/compound/CompoundBase.sol\";\n\nimport \"../lib/dapphub/Guard.sol\";\n\nimport \"../lib/uniswap/UniswapLiteBase.sol\";\n\nimport \"../interfaces/aave/ILendingPoolAddressesProvider.sol\";\nimport \"../interfaces/aave/ILendingPool.sol\";\nimport \"../interfaces/aave/ILendingPoolParametersProvider.sol\";\n\nimport \"../interfaces/compound/ICompoundPriceOracle.sol\";\nimport \"../interfaces/compound/IComptroller.sol\";\nimport \"../interfaces/compound/ICEther.sol\";\nimport \"../interfaces/compound/ICToken.sol\";\n\nimport \"../interfaces/IERC20.sol\";\n\nimport \"../registries/AddressRegistry.sol\";\n\nimport \"../proxies/DACProxy.sol\";\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\n\ncontract DedgeCompoundManager is UniswapLiteBase, CompoundBase {\n using SafeMath for uint;\n\n struct SwapOperationCalldata {\n address addressRegistryAddress;\n address oldCTokenAddress;\n address newCTokenAddress;\n }\n\n function _proxyGuardPermit(address payable proxyAddress, address src) internal {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).permit(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _proxyGuardForbid(address payable proxyAddress, address src) internal {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).forbid(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function swapDebtPostLoan(\n uint _loanAmount,\n uint _aaveFee,\n uint _protocolFee,\n bytes calldata _data\n ) external {\n SwapOperationCalldata memory soCalldata = abi.decode(_data, (SwapOperationCalldata));\n\n AddressRegistry addressRegistry = AddressRegistry(soCalldata.addressRegistryAddress);\n\n address oldCTokenAddress = soCalldata.oldCTokenAddress;\n address newCTokenAddress = soCalldata.newCTokenAddress;\n\n uint debtAmount = _loanAmount.add(_aaveFee).add(_protocolFee);\n\n // Note: debtAmount = loanAmount + fees\n // 1. Has ETH from Aave flashloan\n // 2. Converts ETH to oldCToken underlying\n // 3. Repays oldCToken underlying\n // 4. Calculates new amount to borrow from new token to repay debtAmount\n // 5. Borrows from new token\n // 6. Convert new token to ETH\n\n // Steps 2 + 3\n // Converts ETH to oldCToken underlying and repay\n // Unless old target underlying is already ether\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n repayBorrow(oldCTokenAddress, _loanAmount);\n } else {\n // Gets old token underlying and amount\n address oldTokenUnderlying = ICToken(oldCTokenAddress).underlying();\n\n uint oldTokenUnderlyingAmount = _ethToToken(\n oldTokenUnderlying,\n _loanAmount\n );\n\n // Approves CToken proxy and repays them\n IERC20(oldTokenUnderlying)\n .approve(oldCTokenAddress, oldTokenUnderlyingAmount);\n\n // Repays CToken\n repayBorrow(oldCTokenAddress, oldTokenUnderlyingAmount);\n }\n\n // Steps 4, 5, 6\n // Calculates new debt amount to borrow\n // Unless new target underlying is already ether\n if (newCTokenAddress == addressRegistry.CEtherAddress()) {\n borrow(newCTokenAddress, debtAmount);\n } else {\n // Gets new token underlying\n address newTokenUnderlying = ICToken(newCTokenAddress).underlying();\n\n // Calculates amount of old token underlying that needs to be borrowed\n // to repay debts\n uint newTokenUnderlyingAmount = _getTokenToEthOutput(\n newTokenUnderlying,\n debtAmount\n );\n\n // Borrows new debt\n borrow(newCTokenAddress, newTokenUnderlyingAmount);\n\n // Converts to ether\n // Note this part is a bit more strict as we need to have\n // enough ETH to repay Aave\n _tokenToEth(newTokenUnderlying, newTokenUnderlyingAmount, debtAmount);\n }\n }\n\n function swapCollateralPostLoan(\n uint _loanAmount,\n uint _aaveFee,\n uint _protocolFee,\n bytes calldata _data\n ) external {\n SwapOperationCalldata memory soCalldata = abi.decode(_data, (SwapOperationCalldata));\n\n AddressRegistry addressRegistry = AddressRegistry(soCalldata.addressRegistryAddress);\n\n address oldCTokenAddress = soCalldata.oldCTokenAddress;\n address newCTokenAddress = soCalldata.newCTokenAddress;\n\n // 1. Has ETH from Aave flashloan\n // 2. Converts ETH into newCToken underlying\n // 3. Supplies newCToken underlying\n // 4. Redeems oldCToken underlying\n // 5. Converts outCToken underlying to ETH\n // 6. Borrow ETH to repay aave\n\n // Steps 2 + 3\n // Converts ETH to newCToken underlying and supply\n // Unless old target underlying is already ether\n uint repayAmount = _loanAmount.sub(_aaveFee).sub(_protocolFee);\n\n if (newCTokenAddress == addressRegistry.CEtherAddress()) {\n supply(newCTokenAddress, repayAmount);\n } else {\n // Gets new token underlying and converts ETH into newCToken underlying\n address newTokenUnderlying = ICToken(newCTokenAddress).underlying();\n uint newTokenUnderlyingAmount = _ethToToken(\n newTokenUnderlying,\n repayAmount\n );\n\n // Supplies new CTokens\n supply(newCTokenAddress, newTokenUnderlyingAmount);\n }\n\n // Steps 4, 5\n // Redeem CToken underlying\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n redeemUnderlying(oldCTokenAddress, _loanAmount);\n } else {\n // Gets old token underlying and amount to redeem (based on uniswap)\n address oldTokenUnderlying = ICToken(oldCTokenAddress).underlying();\n uint oldTokenUnderlyingAmount = _getTokenToEthOutput(oldTokenUnderlying, _loanAmount);\n\n // Redeems them\n redeemUnderlying(oldCTokenAddress, oldTokenUnderlyingAmount);\n\n // Converts them into ETH\n _tokenToEth(oldTokenUnderlying, oldTokenUnderlyingAmount, _loanAmount);\n }\n }\n\n /*\n Main entry point for swapping collateral / debt\n\n @params:\n\n dedgeCompoundManagerAddress: Dedge Compound Manager address\n dacProxyAddress: User's proxy address\n addressRegistryAddress: AddressRegistry's Address\n oldCTokenAddress: oldCToken address\n oldTokenUnderlyingDelta: Amount of tokens to swap from old c token's underlying\n executeOperationCalldataParams:\n Abi-encoded `data` used by User's proxy's `execute(address, )` function.\n Used to delegatecall to another contract (i.e. this contract) in the context\n of the proxy. This allows us to decouple the logic of handling flashloans\n from the proxy contract. In this specific case, it is expecting the results\n from: (from JS)\n\n ```\n const IDedgeCompoundManager = ethers.utils.Interface(DedgeCompoundManager.abi)\n\n const executeOperationCalldataParams = IDedgeCompoundManager\n .functions\n .swapDebt OR .swapCollateral\n .encode([\n \n ])\n ```\n */\n function swapOperation(\n address dedgeCompoundManagerAddress,\n address payable dacProxyAddress,\n address addressRegistryAddress,\n address oldCTokenAddress, // Old CToken address for [debt|collateral]\n uint oldTokenUnderlyingDelta, // Amount of old tokens to swap to new tokens\n bytes calldata executeOperationCalldataParams\n ) external {\n // Calling from dacProxy context (msg.sender is dacProxy)\n // 1. Get amount of ETH obtained by selling that from Uniswap\n // 2. Flashloans ETH to dacProxy\n\n // Gets registries\n AddressRegistry addressRegistry = AddressRegistry(addressRegistryAddress);\n\n // 1. Get amount of ETH needed\n // If the old target is ether than the ethDebtAmount is just the delta\n uint ethDebtAmount;\n\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n ethDebtAmount = oldTokenUnderlyingDelta;\n } else {\n // Otherwise calculate it from the exchange\n ethDebtAmount = _getEthToTokenOutput(\n ICToken(oldCTokenAddress).underlying(),\n oldTokenUnderlyingDelta\n );\n }\n\n // Injects the target address into calldataParams\n // so user proxy know which address it'll be calling `calldataParams` on\n bytes memory addressAndExecuteOperationCalldataParams = abi.encodePacked(\n abi.encode(dedgeCompoundManagerAddress),\n executeOperationCalldataParams\n );\n\n ILendingPool lendingPool = ILendingPool(\n ILendingPoolAddressesProvider(\n addressRegistry.AaveLendingPoolAddressProviderAddress()\n ).getLendingPool()\n );\n\n // Approve lendingPool to call proxy\n _proxyGuardPermit(dacProxyAddress, address(lendingPool));\n\n // 3. Flashloan ETH with relevant data\n lendingPool.flashLoan(\n dacProxyAddress,\n addressRegistry.AaveEthAddress(),\n ethDebtAmount,\n addressAndExecuteOperationCalldataParams\n );\n\n // Forbids lendingPool to call proxy\n _proxyGuardForbid(dacProxyAddress, address(lendingPool));\n }\n\n // Clears dust debt by swapping old debt into new debt\n function clearDebtDust(\n address addressRegistryAddress,\n address oldCTokenAddress,\n uint oldTokenUnderlyingDustAmount,\n address newCTokenAddress\n ) public payable {\n // i.e. Has 0.1 ETH (oldCToken) debt 900 DAI (newCToken)\n // wants to have it all in DAI\n\n // 0. Calculates 0.1 ETH equilavent in DAI\n // 1. Borrows out 0.1 ETH equilavent in DAI (~10 DAI as of march 2020)\n // 2. Convert 10 DAI into 0.1 ETH\n // 3. Repay 0.1 ETH\n\n require(oldCTokenAddress != newCTokenAddress, \"clear-debt-same-address\");\n\n AddressRegistry addressRegistry = AddressRegistry(addressRegistryAddress);\n\n uint borrowAmount;\n address oldTokenUnderlying;\n address newTokenUnderlying;\n\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n // ETH -> Token\n newTokenUnderlying = ICToken(newCTokenAddress).underlying();\n\n // Calculates ETH equilavent in token\n borrowAmount = _getTokenToEthOutput(newTokenUnderlying, oldTokenUnderlyingDustAmount);\n\n // Borrows out equilavent token\n borrow(newCTokenAddress, borrowAmount);\n\n // Converts token to ETH\n _tokenToEth(newTokenUnderlying, borrowAmount, oldTokenUnderlyingDustAmount);\n } else if (newCTokenAddress == addressRegistry.CEtherAddress()) {\n // Token -> ETH\n oldTokenUnderlying = ICToken(oldCTokenAddress).underlying();\n\n // Calculates token equilavent in ETH\n borrowAmount = _getEthToTokenOutput(oldTokenUnderlying, oldTokenUnderlyingDustAmount);\n\n // Borrows out equilavent ETH\n borrow(newCTokenAddress, borrowAmount);\n\n // Converts ETH to token\n _ethToToken(oldTokenUnderlying, borrowAmount, oldTokenUnderlyingDustAmount);\n } else {\n // token -> token\n oldTokenUnderlying = ICToken(oldCTokenAddress).underlying();\n newTokenUnderlying = ICToken(newCTokenAddress).underlying();\n\n // Calculates eth borrow amount\n uint ethAmount = _getEthToTokenOutput(oldTokenUnderlying, oldTokenUnderlyingDustAmount);\n\n // Calculates token borrow amount\n borrowAmount = _getTokenToEthOutput(newTokenUnderlying, ethAmount);\n\n // Borrows out equilavent token\n borrow(newCTokenAddress, borrowAmount);\n\n // Converts old token to target token\n _tokenToEth(newTokenUnderlying, borrowAmount, ethAmount);\n _ethToToken(oldTokenUnderlying, ethAmount, oldTokenUnderlyingDustAmount);\n }\n\n // Repays borrowed\n repayBorrow(oldCTokenAddress, oldTokenUnderlyingDustAmount);\n }\n\n function clearCollateralDust(\n address addressRegistryAddress,\n address oldCTokenAddress,\n uint oldTokenUnderlyingAmount,\n address newCTokenAddress\n ) public payable {\n // i.e. Has 10 ETH collateral and 10 DAI collateral\n // wants to have it all in ETH\n\n // 1. Redeems 10 DAI collateral\n // 2. Converts it to ETH\n // 3. Puts it into ETH\n\n // More abstractly,\n // 1. Redeems tokens\n // 2. Convert it to other token\n // 3. Put other token in\n\n require(oldCTokenAddress != newCTokenAddress, \"clear-collateral-same-address\");\n\n uint supplyAmount;\n AddressRegistry addressRegistry = AddressRegistry(addressRegistryAddress);\n\n // Redeems collateral\n redeemUnderlying(oldCTokenAddress, oldTokenUnderlyingAmount);\n\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n // ETH -> Token\n supplyAmount = _ethToToken(\n ICToken(newCTokenAddress).underlying(),\n oldTokenUnderlyingAmount\n );\n } else if (newCTokenAddress == addressRegistry.CEtherAddress()) {\n // Token -> ETH\n supplyAmount = _tokenToEth(\n ICToken(oldCTokenAddress).underlying(),\n oldTokenUnderlyingAmount\n );\n } else {\n // Token -> Token\n supplyAmount = _tokenToToken(\n ICToken(oldCTokenAddress).underlying(),\n ICToken(newCTokenAddress).underlying(),\n oldTokenUnderlyingAmount\n );\n }\n\n // Supplies collateral\n supply(newCTokenAddress, supplyAmount);\n }\n}\n", @@ -699,7 +699,7 @@ "id": 5209, "nodeType": "ImportDirective", "scope": 5897, - "sourceUnit": 7629, + "sourceUnit": 7551, "src": "640:43:25", "symbolAliases": [], "unitAlias": "" @@ -710,7 +710,7 @@ "id": 5210, "nodeType": "ImportDirective", "scope": 5897, - "sourceUnit": 7323, + "sourceUnit": 7245, "src": "685:33:25", "symbolAliases": [], "unitAlias": "" @@ -721,7 +721,7 @@ "id": 5211, "nodeType": "ImportDirective", "scope": 5897, - "sourceUnit": 7816, + "sourceUnit": 7738, "src": "720:51:25", "symbolAliases": [], "unitAlias": "" @@ -788,10 +788,10 @@ "id": 5216, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7815, + "referencedDeclaration": 7737, "src": "848:8:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$7815", + "typeIdentifier": "t_contract$_SafeMath_$7737", "typeString": "library SafeMath" } }, @@ -976,10 +976,10 @@ "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1131:8:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, @@ -993,7 +993,7 @@ "nodeType": "FunctionCall", "src": "1131:22:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, @@ -1613,10 +1613,10 @@ "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1430:8:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, @@ -1630,7 +1630,7 @@ "nodeType": "FunctionCall", "src": "1430:22:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, @@ -2279,7 +2279,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "1819:3:25", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -2332,7 +2332,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -2340,10 +2340,10 @@ "id": 5327, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "1872:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -2396,10 +2396,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "1906:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -2413,7 +2413,7 @@ "nodeType": "FunctionCall", "src": "1906:50:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -2653,7 +2653,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 7655, + "referencedDeclaration": 7577, "src": "2114:15:25", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -2681,7 +2681,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 7655, + "referencedDeclaration": 7577, "src": "2114:29:25", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -2746,7 +2746,7 @@ "referencedDeclaration": 5328, "src": "2671:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -2757,7 +2757,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "2671:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -3332,7 +3332,7 @@ "referencedDeclaration": 5328, "src": "3484:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -3343,7 +3343,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "3484:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -4079,7 +4079,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "4516:3:25", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -4132,7 +4132,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -4140,10 +4140,10 @@ "id": 5455, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "4569:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -4196,10 +4196,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "4603:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -4213,7 +4213,7 @@ "nodeType": "FunctionCall", "src": "4603:50:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -4453,7 +4453,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 7671, + "referencedDeclaration": 7593, "src": "5230:15:25", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -4481,7 +4481,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 7671, + "referencedDeclaration": 7593, "src": "5230:29:25", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -4546,7 +4546,7 @@ "referencedDeclaration": 5456, "src": "5308:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -4557,7 +4557,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "5308:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -5009,7 +5009,7 @@ "referencedDeclaration": 5456, "src": "5914:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -5020,7 +5020,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "5914:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -5672,7 +5672,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -5680,10 +5680,10 @@ "id": 5570, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "8332:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -5720,10 +5720,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "8366:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -5737,7 +5737,7 @@ "nodeType": "FunctionCall", "src": "8366:39:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -5822,7 +5822,7 @@ "referencedDeclaration": 5571, "src": "8587:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -5833,7 +5833,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "8587:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -6158,7 +6158,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "9153:3:25", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -6224,7 +6224,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "9123:3:25", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -6322,7 +6322,7 @@ "referencedDeclaration": 5571, "src": "9357:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -6333,7 +6333,7 @@ "lValueRequested": false, "memberName": "AaveLendingPoolAddressProviderAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7573, + "referencedDeclaration": 7495, "src": "9357:53:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -6591,7 +6591,7 @@ "referencedDeclaration": 5571, "src": "9687:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -6602,7 +6602,7 @@ "lValueRequested": false, "memberName": "AaveEthAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7576, + "referencedDeclaration": 7498, "src": "9687:30:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -7100,10 +7100,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "10505:7:25", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -7143,7 +7143,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -7151,10 +7151,10 @@ "id": 5669, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "10588:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -7191,10 +7191,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "10622:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -7208,7 +7208,7 @@ "nodeType": "FunctionCall", "src": "10622:39:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -7369,7 +7369,7 @@ "referencedDeclaration": 5670, "src": "10796:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -7380,7 +7380,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "10796:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -7448,7 +7448,7 @@ "referencedDeclaration": 5670, "src": "11345:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -7459,7 +7459,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "11345:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -9246,10 +9246,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "13284:7:25", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -9326,7 +9326,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -9334,10 +9334,10 @@ "id": 5825, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "13400:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -9374,10 +9374,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "13434:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -9391,7 +9391,7 @@ "nodeType": "FunctionCall", "src": "13434:39:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -9510,7 +9510,7 @@ "referencedDeclaration": 5826, "src": "13609:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -9521,7 +9521,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "13609:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -9589,7 +9589,7 @@ "referencedDeclaration": 5826, "src": "13863:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -9600,7 +9600,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "13863:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -10624,7 +10624,7 @@ "id": 5209, "nodeType": "ImportDirective", "scope": 5897, - "sourceUnit": 7629, + "sourceUnit": 7551, "src": "640:43:25", "symbolAliases": [], "unitAlias": "" @@ -10635,7 +10635,7 @@ "id": 5210, "nodeType": "ImportDirective", "scope": 5897, - "sourceUnit": 7323, + "sourceUnit": 7245, "src": "685:33:25", "symbolAliases": [], "unitAlias": "" @@ -10646,7 +10646,7 @@ "id": 5211, "nodeType": "ImportDirective", "scope": 5897, - "sourceUnit": 7816, + "sourceUnit": 7738, "src": "720:51:25", "symbolAliases": [], "unitAlias": "" @@ -10713,10 +10713,10 @@ "id": 5216, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7815, + "referencedDeclaration": 7737, "src": "848:8:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$7815", + "typeIdentifier": "t_contract$_SafeMath_$7737", "typeString": "library SafeMath" } }, @@ -10901,10 +10901,10 @@ "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1131:8:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, @@ -10918,7 +10918,7 @@ "nodeType": "FunctionCall", "src": "1131:22:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, @@ -11538,10 +11538,10 @@ "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1430:8:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, @@ -11555,7 +11555,7 @@ "nodeType": "FunctionCall", "src": "1430:22:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, @@ -12204,7 +12204,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "1819:3:25", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -12257,7 +12257,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -12265,10 +12265,10 @@ "id": 5327, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "1872:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -12321,10 +12321,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "1906:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -12338,7 +12338,7 @@ "nodeType": "FunctionCall", "src": "1906:50:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -12578,7 +12578,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 7655, + "referencedDeclaration": 7577, "src": "2114:15:25", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -12606,7 +12606,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 7655, + "referencedDeclaration": 7577, "src": "2114:29:25", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -12671,7 +12671,7 @@ "referencedDeclaration": 5328, "src": "2671:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -12682,7 +12682,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "2671:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -13257,7 +13257,7 @@ "referencedDeclaration": 5328, "src": "3484:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -13268,7 +13268,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "3484:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -14004,7 +14004,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "4516:3:25", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -14057,7 +14057,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -14065,10 +14065,10 @@ "id": 5455, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "4569:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -14121,10 +14121,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "4603:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -14138,7 +14138,7 @@ "nodeType": "FunctionCall", "src": "4603:50:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -14378,7 +14378,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 7671, + "referencedDeclaration": 7593, "src": "5230:15:25", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -14406,7 +14406,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 7671, + "referencedDeclaration": 7593, "src": "5230:29:25", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -14471,7 +14471,7 @@ "referencedDeclaration": 5456, "src": "5308:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -14482,7 +14482,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "5308:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -14934,7 +14934,7 @@ "referencedDeclaration": 5456, "src": "5914:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -14945,7 +14945,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "5914:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -15597,7 +15597,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -15605,10 +15605,10 @@ "id": 5570, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "8332:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -15645,10 +15645,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "8366:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -15662,7 +15662,7 @@ "nodeType": "FunctionCall", "src": "8366:39:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -15747,7 +15747,7 @@ "referencedDeclaration": 5571, "src": "8587:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -15758,7 +15758,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "8587:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -16083,7 +16083,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "9153:3:25", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -16149,7 +16149,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "9123:3:25", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -16247,7 +16247,7 @@ "referencedDeclaration": 5571, "src": "9357:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -16258,7 +16258,7 @@ "lValueRequested": false, "memberName": "AaveLendingPoolAddressProviderAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7573, + "referencedDeclaration": 7495, "src": "9357:53:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -16516,7 +16516,7 @@ "referencedDeclaration": 5571, "src": "9687:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -16527,7 +16527,7 @@ "lValueRequested": false, "memberName": "AaveEthAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7576, + "referencedDeclaration": 7498, "src": "9687:30:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -17025,10 +17025,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "10505:7:25", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17068,7 +17068,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -17076,10 +17076,10 @@ "id": 5669, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "10588:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -17116,10 +17116,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "10622:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -17133,7 +17133,7 @@ "nodeType": "FunctionCall", "src": "10622:39:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -17294,7 +17294,7 @@ "referencedDeclaration": 5670, "src": "10796:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -17305,7 +17305,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "10796:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -17373,7 +17373,7 @@ "referencedDeclaration": 5670, "src": "11345:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -17384,7 +17384,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "11345:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -19171,10 +19171,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "13284:7:25", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -19251,7 +19251,7 @@ "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { @@ -19259,10 +19259,10 @@ "id": 5825, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "13400:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -19299,10 +19299,10 @@ "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "13434:15:25", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, @@ -19316,7 +19316,7 @@ "nodeType": "FunctionCall", "src": "13434:39:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -19435,7 +19435,7 @@ "referencedDeclaration": 5826, "src": "13609:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -19446,7 +19446,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "13609:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -19514,7 +19514,7 @@ "referencedDeclaration": 5826, "src": "13863:15:25", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -19525,7 +19525,7 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "13863:29:25", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", @@ -20402,11 +20402,11 @@ "events": {}, "links": {}, "address": "0x254dffcd3277C0b1660F6d42EFbB754edaBAbC2B", - "transactionHash": "0xedbb592c1679c0c2b7e47771d859b5ab64bf0ddec61f2fbb29431d7aa856dbfe" + "transactionHash": "0x7faa9ac05ee2a838f157ff8cd3e5cb0af5413316e2d870954c5bbe7c0d02c94c" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:19:27.843Z", + "updatedAt": "2020-04-03T04:49:15.485Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeExitManager.json b/packages/smart-contracts/artifacts/DedgeExitManager.json index 9b83547..fd369d8 100644 --- a/packages/smart-contracts/artifacts/DedgeExitManager.json +++ b/packages/smart-contracts/artifacts/DedgeExitManager.json @@ -96,59 +96,23 @@ "payable": false, "stateMutability": "nonpayable", "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "addressRegistryAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "getExitPositionsData", - "outputs": [ - { - "internalType": "uint256", - "name": "ethDebtAmount", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "debtAddress", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "collateralAddress", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"_approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalEthDebtAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dedgeExitManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"exitPositions\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"exitPositionsPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"getExitPositionsData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ethDebtAmount\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"debtAddress\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"collateralAddress\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol\":\"DedgeExitManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0x3c1fd10b8372a9605ad8c50f4412ec551c2a6cd1c766119a38d30b972285ace5\",\"urls\":[\"bzz-raw://6cab8f4140440f85d86faec88351efb196e3c628bc16b0cf808637efe6814e5a\",\"dweb:/ipfs/QmPKFwz4Aw4SoEZ9oXCdwexULcDaLX8HV3f3nEQXbskakU\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0x1fdd5a3473065d6f14bb74dd57431257d1a6b3d400472fe22e616665fb71d9fa\",\"urls\":[\"bzz-raw://9f75f98e1fcb3b0618bfc4d7e07dfa313250fb3e5012c5101e3e5589b013d6f7\",\"dweb:/ipfs/QmZduo9rqcHV9soppn4eJ9EM3UessLwTpBv3dcx5QWzyzj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol\":{\"keccak256\":\"0x5a13fa3e14027da16baadc2fc7b114cbea1e0d622b3a3b168703dd989c46d784\",\"urls\":[\"bzz-raw://b86c3ae30a66e502808d9e0a17206f9e2194ecd5ad83a5ea299d41d3bc1a6db7\",\"dweb:/ipfs/QmdKEojNCxFnCVKZ6Lb7gEHKHDPXwj6RnTw6nX4ygaEKd6\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xa93ae0a65d7000bbef6d0a31cd3c2d6f79e37e13db19f127b53e6e707f0507b4\",\"urls\":[\"bzz-raw://931af9f9ea15aade3685b204a6637b1902296f06b4128eb57a066e7ab8929026\",\"dweb:/ipfs/QmSauiKUjz6sXdcWSwvjzwNsr8Gvbj38mh97ikks4dwfbR\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50612442806100206000396000f3fe60806040526004361061003f5760003560e01c8063642c3dfa146100415780636889dfe11461006a5780637b7d722514610093578063ada9e355146100bc575b005b34801561004d57600080fd5b5061006860048036036100639190810190611b83565b6100fb565b005b34801561007657600080fd5b50610091600480360361008c9190810190611c15565b610353565b005b34801561009f57600080fd5b506100ba60048036036100b59190810190611a21565b610529565b005b3480156100c857600080fd5b506100e360048036036100de91908101906119e5565b610683565b6040516100f2939291906120d8565b60405180910390f35b60008390506060866040516020016101139190611f59565b604051602081830303815290604052848460405160200161013693929190611f1e565b604051602081830303815290604052905060008273ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561018f57600080fd5b505afa1580156101a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101c791908101906119bc565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561020c57600080fd5b505afa158015610220573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061024491908101906119bc565b905061025087826109b8565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de888573ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b1580156102b357600080fd5b505afa1580156102c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102eb91908101906119bc565b8c866040518563ffffffff1660e01b815260040161030c9493929190611f8f565b600060405180830381600087803b15801561032657600080fd5b505af115801561033a573d6000803e3d6000fd5b505050506103488782610bba565b505050505050505050565b61035b6116cc565b828261036a9190810190611b19565b90506000816020015173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b857600080fd5b505afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103f091908101906119bc565b905060008090505b82604001515181101561043357610426828460400151838151811061041957fe5b6020026020010151610dbc565b80806001019150506103f8565b50600080600090505b83606001515181101561047b5761046a838560600151838151811061045d57fe5b6020026020010151610f2a565b82019150808060010191505061043c565b50826000015173ffffffffffffffffffffffffffffffffffffffff166104ce876104c08a6104b28d8761109690919063ffffffff16565b61109690919063ffffffff16565b61109690919063ffffffff16565b6040516104da90611f44565b60006040518083038185875af1925050503d8060008114610517576040519150601f19603f3d011682016040523d82523d6000602084013e61051c565b606091505b5050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561057157600080fd5b505afa158015610585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105a991908101906119bc565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016105ea929190611fdb565b602060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061063c9190810190611a9e565b15151461067e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106759061209d565b60405180910390fd5b505050565b6000606080600085905060008173ffffffffffffffffffffffffffffffffffffffff1663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d557600080fd5b505afa1580156106e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061070d91908101906119bc565b905060608173ffffffffffffffffffffffffffffffffffffffff1663abfceffc886040518263ffffffff1660e01b815260040161074a9190611f59565b60006040518083038186803b15801561076257600080fd5b505afa158015610776573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061079f9190810190611a5d565b9050600080600080600080600090505b86518110156109a8578681815181106107c457fe5b602002602001015195508573ffffffffffffffffffffffffffffffffffffffff166317bfdfbc8e6040518263ffffffff1660e01b81526004016108079190611f59565b60206040518083038186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108579190810190611b5a565b92508573ffffffffffffffffffffffffffffffffffffffff16633af9e6698e6040518263ffffffff1660e01b81526004016108929190611f59565b60206040518083038186803b1580156108aa57600080fd5b505afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108e29190810190611b5a565b9450600085111561093d57858a85815181106108fa57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083806001019450505b600083111561099b57858b838151811061095357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508180600101925050828c019b505b80806001019150506107af565b5050505050505050509250925092565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0057600080fd5b505afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a389190810190611af0565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610aaf57600080fd5b505afa158015610ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ae79190810190611ac7565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b659190810190611ac7565b6040518463ffffffff1660e01b8152600401610b8393929190612004565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0257600080fd5b505afa158015610c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c3a9190810190611af0565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ce99190810190611ac7565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2f57600080fd5b505afa158015610d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d679190810190611ac7565b6040518463ffffffff1660e01b8152600401610d8593929190612004565b600060405180830381600087803b158015610d9f57600080fd5b505af1158015610db3573d6000803e3d6000fd5b50505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff166317bfdfbc306040518263ffffffff1660e01b8152600401610df79190611f74565b60206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e479190810190611b5a565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610f1a5760008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec457600080fd5b505afa158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610efc91908101906119bc565b90506000610f0a82846110e0565b9050610f16828261117b565b5050505b610f25838383611191565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff16633af9e669306040518263ffffffff1660e01b8152600401610f669190611f74565b60206040518083038186803b158015610f7e57600080fd5b505afa158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fb69190810190611b5a565b9050610fc28382611308565b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fff5780915050611090565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561104757600080fd5b505afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061107f91908101906119bc565b905061108b81836113d9565b925050505b92915050565b60006110d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113ef565b905092915050565b60006110eb8361144a565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b815260040161112391906120bd565b60206040518083038186803b15801561113b57600080fd5b505afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111739190810190611b5a565b905092915050565b6000611189838360016114f0565b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561122b578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b5050505050611303565b6112358282610529565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b815260040161127091906120bd565b602060405180830381600087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112c29190810190611b5a565b14611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f99061207d565b60405180910390fd5b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b815260040161134391906120bd565b602060405180830381600087803b15801561135d57600080fd5b505af1158015611371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113959190810190611b5a565b146113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc9061205d565b60405180910390fd5b5050565b60006113e783836001611594565b905092915050565b6000838311158290611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e919061203b565b60405180910390fd5b5060008385039050809150509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b81526004016114999190611f59565b60206040518083038186803b1580156114b157600080fd5b505afa1580156114c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e991908101906119bc565b9050919050565b60006114fb8461144a565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b815260040161153992919061211d565b6020604051808303818588803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525061158b9190810190611b5a565b90509392505050565b6000806115a08561144a565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b81526004016115dd929190611fdb565b602060405180830381600087803b1580156115f757600080fd5b505af115801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061162f9190810190611a9e565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b815260040161167093929190612146565b602060405180830381600087803b15801561168a57600080fd5b505af115801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116c29190810190611b5a565b9150509392505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b60008135905061172f81612375565b92915050565b60008151905061174481612375565b92915050565b6000813590506117598161238c565b92915050565b600082601f83011261177057600080fd5b813561178361177e826121aa565b61217d565b915081818352602084019350602081019050838560208402820111156117a857600080fd5b60005b838110156117d857816117be8882611720565b8452602084019350602083019250506001810190506117ab565b5050505092915050565b600082601f8301126117f357600080fd5b8151611806611801826121d2565b61217d565b9150818183526020840193506020810190508385602084028201111561182b57600080fd5b60005b8381101561185b57816118418882611735565b84526020840193506020830192505060018101905061182e565b5050505092915050565b600081519050611874816123a3565b92915050565b600081519050611889816123ba565b92915050565b60008083601f8401126118a157600080fd5b8235905067ffffffffffffffff8111156118ba57600080fd5b6020830191508360018202830111156118d257600080fd5b9250929050565b6000815190506118e8816123d1565b92915050565b60006080828403121561190057600080fd5b61190a608061217d565b9050600061191a8482850161174a565b600083015250602061192e84828501611720565b602083015250604082013567ffffffffffffffff81111561194e57600080fd5b61195a8482850161175f565b604083015250606082013567ffffffffffffffff81111561197a57600080fd5b6119868482850161175f565b60608301525092915050565b6000813590506119a1816123e8565b92915050565b6000815190506119b6816123e8565b92915050565b6000602082840312156119ce57600080fd5b60006119dc84828501611735565b91505092915050565b600080604083850312156119f857600080fd5b6000611a0685828601611720565b9250506020611a1785828601611720565b9150509250929050565b60008060408385031215611a3457600080fd5b6000611a4285828601611720565b9250506020611a5385828601611992565b9150509250929050565b600060208284031215611a6f57600080fd5b600082015167ffffffffffffffff811115611a8957600080fd5b611a95848285016117e2565b91505092915050565b600060208284031215611ab057600080fd5b6000611abe84828501611865565b91505092915050565b600060208284031215611ad957600080fd5b6000611ae78482850161187a565b91505092915050565b600060208284031215611b0257600080fd5b6000611b10848285016118d9565b91505092915050565b600060208284031215611b2b57600080fd5b600082013567ffffffffffffffff811115611b4557600080fd5b611b51848285016118ee565b91505092915050565b600060208284031215611b6c57600080fd5b6000611b7a848285016119a7565b91505092915050565b60008060008060008060a08789031215611b9c57600080fd5b6000611baa89828a01611992565b9650506020611bbb89828a01611720565b9550506040611bcc89828a0161174a565b9450506060611bdd89828a01611720565b935050608087013567ffffffffffffffff811115611bfa57600080fd5b611c0689828a0161188f565b92509250509295509295509295565b600080600080600060808688031215611c2d57600080fd5b6000611c3b88828901611992565b9550506020611c4c88828901611992565b9450506040611c5d88828901611992565b935050606086013567ffffffffffffffff811115611c7a57600080fd5b611c868882890161188f565b92509250509295509295909350565b6000611ca18383611cbc565b60208301905092915050565b611cb6816122ec565b82525050565b611cc581612276565b82525050565b611cd481612276565b82525050565b6000611ce58261220a565b611cef8185612238565b9350611cfa836121fa565b8060005b83811015611d2b578151611d128882611c95565b9750611d1d8361222b565b925050600181019050611cfe565b5085935050505092915050565b611d41816122a6565b82525050565b6000611d53838561225a565b9350611d60838584612322565b82840190509392505050565b6000611d7782612215565b611d818185612249565b9350611d91818560208601612331565b611d9a81612364565b840191505092915050565b6000611db082612215565b611dba818561225a565b9350611dca818560208601612331565b80840191505092915050565b6000611de182612220565b611deb8185612265565b9350611dfb818560208601612331565b611e0481612364565b840191505092915050565b6000611e1c602983612265565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e82601d83612265565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000611ec260008361225a565b9150600082019050919050565b6000611edc602083612265565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b611f18816122e2565b82525050565b6000611f2a8286611da5565b9150611f37828486611d47565b9150819050949350505050565b6000611f4f82611eb5565b9150819050919050565b6000602082019050611f6e6000830184611ccb565b92915050565b6000602082019050611f896000830184611cad565b92915050565b6000608082019050611fa46000830187611cad565b611fb16020830186611ccb565b611fbe6040830185611f0f565b8181036060830152611fd08184611d6c565b905095945050505050565b6000604082019050611ff06000830185611ccb565b611ffd6020830184611f0f565b9392505050565b60006060820190506120196000830186611d38565b6120266020830185611d38565b6120336040830184611d38565b949350505050565b600060208201905081810360008301526120558184611dd6565b905092915050565b6000602082019050818103600083015261207681611e0f565b9050919050565b6000602082019050818103600083015261209681611e75565b9050919050565b600060208201905081810360008301526120b681611ecf565b9050919050565b60006020820190506120d26000830184611f0f565b92915050565b60006060820190506120ed6000830186611f0f565b81810360208301526120ff8185611cda565b905081810360408301526121138184611cda565b9050949350505050565b60006040820190506121326000830185611f0f565b61213f6020830184611f0f565b9392505050565b600060608201905061215b6000830186611f0f565b6121686020830185611f0f565b6121756040830184611f0f565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156121a057600080fd5b8060405250919050565b600067ffffffffffffffff8211156121c157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156121e957600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612281826122c2565b9050919050565b6000612293826122c2565b9050919050565b60008115159050919050565b6000819050919050565b60006122bb82612276565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006122f7826122fe565b9050919050565b600061230982612310565b9050919050565b600061231b826122c2565b9050919050565b82818337600083830152505050565b60005b8381101561234f578082015181840152602081019050612334565b8381111561235e576000848401525b50505050565b6000601f19601f8301169050919050565b61237e81612276565b811461238957600080fd5b50565b61239581612288565b81146123a057600080fd5b50565b6123ac8161229a565b81146123b757600080fd5b50565b6123c3816122a6565b81146123ce57600080fd5b50565b6123da816122b0565b81146123e557600080fd5b50565b6123f1816122e2565b81146123fc57600080fd5b5056fea365627a7a72315820bc4abdb0252de70c56f345990f11e4b6fc09277d3d54066f5a016a28b3298a9c6c6578706572696d656e74616cf564736f6c63430005100040", - "deployedBytecode": "0x60806040526004361061003f5760003560e01c8063642c3dfa146100415780636889dfe11461006a5780637b7d722514610093578063ada9e355146100bc575b005b34801561004d57600080fd5b5061006860048036036100639190810190611b83565b6100fb565b005b34801561007657600080fd5b50610091600480360361008c9190810190611c15565b610353565b005b34801561009f57600080fd5b506100ba60048036036100b59190810190611a21565b610529565b005b3480156100c857600080fd5b506100e360048036036100de91908101906119e5565b610683565b6040516100f2939291906120d8565b60405180910390f35b60008390506060866040516020016101139190611f59565b604051602081830303815290604052848460405160200161013693929190611f1e565b604051602081830303815290604052905060008273ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561018f57600080fd5b505afa1580156101a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101c791908101906119bc565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561020c57600080fd5b505afa158015610220573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061024491908101906119bc565b905061025087826109b8565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de888573ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b1580156102b357600080fd5b505afa1580156102c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102eb91908101906119bc565b8c866040518563ffffffff1660e01b815260040161030c9493929190611f8f565b600060405180830381600087803b15801561032657600080fd5b505af115801561033a573d6000803e3d6000fd5b505050506103488782610bba565b505050505050505050565b61035b6116cc565b828261036a9190810190611b19565b90506000816020015173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b857600080fd5b505afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103f091908101906119bc565b905060008090505b82604001515181101561043357610426828460400151838151811061041957fe5b6020026020010151610dbc565b80806001019150506103f8565b50600080600090505b83606001515181101561047b5761046a838560600151838151811061045d57fe5b6020026020010151610f2a565b82019150808060010191505061043c565b50826000015173ffffffffffffffffffffffffffffffffffffffff166104ce876104c08a6104b28d8761109690919063ffffffff16565b61109690919063ffffffff16565b61109690919063ffffffff16565b6040516104da90611f44565b60006040518083038185875af1925050503d8060008114610517576040519150601f19603f3d011682016040523d82523d6000602084013e61051c565b606091505b5050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561057157600080fd5b505afa158015610585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105a991908101906119bc565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016105ea929190611fdb565b602060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061063c9190810190611a9e565b15151461067e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106759061209d565b60405180910390fd5b505050565b6000606080600085905060008173ffffffffffffffffffffffffffffffffffffffff1663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d557600080fd5b505afa1580156106e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061070d91908101906119bc565b905060608173ffffffffffffffffffffffffffffffffffffffff1663abfceffc886040518263ffffffff1660e01b815260040161074a9190611f59565b60006040518083038186803b15801561076257600080fd5b505afa158015610776573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061079f9190810190611a5d565b9050600080600080600080600090505b86518110156109a8578681815181106107c457fe5b602002602001015195508573ffffffffffffffffffffffffffffffffffffffff166317bfdfbc8e6040518263ffffffff1660e01b81526004016108079190611f59565b60206040518083038186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108579190810190611b5a565b92508573ffffffffffffffffffffffffffffffffffffffff16633af9e6698e6040518263ffffffff1660e01b81526004016108929190611f59565b60206040518083038186803b1580156108aa57600080fd5b505afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108e29190810190611b5a565b9450600085111561093d57858a85815181106108fa57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083806001019450505b600083111561099b57858b838151811061095357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508180600101925050828c019b505b80806001019150506107af565b5050505050505050509250925092565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0057600080fd5b505afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a389190810190611af0565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610aaf57600080fd5b505afa158015610ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ae79190810190611ac7565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b659190810190611ac7565b6040518463ffffffff1660e01b8152600401610b8393929190612004565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0257600080fd5b505afa158015610c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c3a9190810190611af0565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ce99190810190611ac7565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2f57600080fd5b505afa158015610d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d679190810190611ac7565b6040518463ffffffff1660e01b8152600401610d8593929190612004565b600060405180830381600087803b158015610d9f57600080fd5b505af1158015610db3573d6000803e3d6000fd5b50505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff166317bfdfbc306040518263ffffffff1660e01b8152600401610df79190611f74565b60206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e479190810190611b5a565b90508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610f1a5760008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec457600080fd5b505afa158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610efc91908101906119bc565b90506000610f0a82846110e0565b9050610f16828261117b565b5050505b610f25838383611191565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff16633af9e669306040518263ffffffff1660e01b8152600401610f669190611f74565b60206040518083038186803b158015610f7e57600080fd5b505afa158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fb69190810190611b5a565b9050610fc28382611308565b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fff5780915050611090565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561104757600080fd5b505afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061107f91908101906119bc565b905061108b81836113d9565b925050505b92915050565b60006110d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113ef565b905092915050565b60006110eb8361144a565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b815260040161112391906120bd565b60206040518083038186803b15801561113b57600080fd5b505afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111739190810190611b5a565b905092915050565b6000611189838360016114f0565b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561122b578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b5050505050611303565b6112358282610529565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b815260040161127091906120bd565b602060405180830381600087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112c29190810190611b5a565b14611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f99061207d565b60405180910390fd5b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b815260040161134391906120bd565b602060405180830381600087803b15801561135d57600080fd5b505af1158015611371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113959190810190611b5a565b146113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc9061205d565b60405180910390fd5b5050565b60006113e783836001611594565b905092915050565b6000838311158290611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e919061203b565b60405180910390fd5b5060008385039050809150509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b81526004016114999190611f59565b60206040518083038186803b1580156114b157600080fd5b505afa1580156114c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e991908101906119bc565b9050919050565b60006114fb8461144a565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b815260040161153992919061211d565b6020604051808303818588803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525061158b9190810190611b5a565b90509392505050565b6000806115a08561144a565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b81526004016115dd929190611fdb565b602060405180830381600087803b1580156115f757600080fd5b505af115801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061162f9190810190611a9e565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b815260040161167093929190612146565b602060405180830381600087803b15801561168a57600080fd5b505af115801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116c29190810190611b5a565b9150509392505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b60008135905061172f81612375565b92915050565b60008151905061174481612375565b92915050565b6000813590506117598161238c565b92915050565b600082601f83011261177057600080fd5b813561178361177e826121aa565b61217d565b915081818352602084019350602081019050838560208402820111156117a857600080fd5b60005b838110156117d857816117be8882611720565b8452602084019350602083019250506001810190506117ab565b5050505092915050565b600082601f8301126117f357600080fd5b8151611806611801826121d2565b61217d565b9150818183526020840193506020810190508385602084028201111561182b57600080fd5b60005b8381101561185b57816118418882611735565b84526020840193506020830192505060018101905061182e565b5050505092915050565b600081519050611874816123a3565b92915050565b600081519050611889816123ba565b92915050565b60008083601f8401126118a157600080fd5b8235905067ffffffffffffffff8111156118ba57600080fd5b6020830191508360018202830111156118d257600080fd5b9250929050565b6000815190506118e8816123d1565b92915050565b60006080828403121561190057600080fd5b61190a608061217d565b9050600061191a8482850161174a565b600083015250602061192e84828501611720565b602083015250604082013567ffffffffffffffff81111561194e57600080fd5b61195a8482850161175f565b604083015250606082013567ffffffffffffffff81111561197a57600080fd5b6119868482850161175f565b60608301525092915050565b6000813590506119a1816123e8565b92915050565b6000815190506119b6816123e8565b92915050565b6000602082840312156119ce57600080fd5b60006119dc84828501611735565b91505092915050565b600080604083850312156119f857600080fd5b6000611a0685828601611720565b9250506020611a1785828601611720565b9150509250929050565b60008060408385031215611a3457600080fd5b6000611a4285828601611720565b9250506020611a5385828601611992565b9150509250929050565b600060208284031215611a6f57600080fd5b600082015167ffffffffffffffff811115611a8957600080fd5b611a95848285016117e2565b91505092915050565b600060208284031215611ab057600080fd5b6000611abe84828501611865565b91505092915050565b600060208284031215611ad957600080fd5b6000611ae78482850161187a565b91505092915050565b600060208284031215611b0257600080fd5b6000611b10848285016118d9565b91505092915050565b600060208284031215611b2b57600080fd5b600082013567ffffffffffffffff811115611b4557600080fd5b611b51848285016118ee565b91505092915050565b600060208284031215611b6c57600080fd5b6000611b7a848285016119a7565b91505092915050565b60008060008060008060a08789031215611b9c57600080fd5b6000611baa89828a01611992565b9650506020611bbb89828a01611720565b9550506040611bcc89828a0161174a565b9450506060611bdd89828a01611720565b935050608087013567ffffffffffffffff811115611bfa57600080fd5b611c0689828a0161188f565b92509250509295509295509295565b600080600080600060808688031215611c2d57600080fd5b6000611c3b88828901611992565b9550506020611c4c88828901611992565b9450506040611c5d88828901611992565b935050606086013567ffffffffffffffff811115611c7a57600080fd5b611c868882890161188f565b92509250509295509295909350565b6000611ca18383611cbc565b60208301905092915050565b611cb6816122ec565b82525050565b611cc581612276565b82525050565b611cd481612276565b82525050565b6000611ce58261220a565b611cef8185612238565b9350611cfa836121fa565b8060005b83811015611d2b578151611d128882611c95565b9750611d1d8361222b565b925050600181019050611cfe565b5085935050505092915050565b611d41816122a6565b82525050565b6000611d53838561225a565b9350611d60838584612322565b82840190509392505050565b6000611d7782612215565b611d818185612249565b9350611d91818560208601612331565b611d9a81612364565b840191505092915050565b6000611db082612215565b611dba818561225a565b9350611dca818560208601612331565b80840191505092915050565b6000611de182612220565b611deb8185612265565b9350611dfb818560208601612331565b611e0481612364565b840191505092915050565b6000611e1c602983612265565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e82601d83612265565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000611ec260008361225a565b9150600082019050919050565b6000611edc602083612265565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b611f18816122e2565b82525050565b6000611f2a8286611da5565b9150611f37828486611d47565b9150819050949350505050565b6000611f4f82611eb5565b9150819050919050565b6000602082019050611f6e6000830184611ccb565b92915050565b6000602082019050611f896000830184611cad565b92915050565b6000608082019050611fa46000830187611cad565b611fb16020830186611ccb565b611fbe6040830185611f0f565b8181036060830152611fd08184611d6c565b905095945050505050565b6000604082019050611ff06000830185611ccb565b611ffd6020830184611f0f565b9392505050565b60006060820190506120196000830186611d38565b6120266020830185611d38565b6120336040830184611d38565b949350505050565b600060208201905081810360008301526120558184611dd6565b905092915050565b6000602082019050818103600083015261207681611e0f565b9050919050565b6000602082019050818103600083015261209681611e75565b9050919050565b600060208201905081810360008301526120b681611ecf565b9050919050565b60006020820190506120d26000830184611f0f565b92915050565b60006060820190506120ed6000830186611f0f565b81810360208301526120ff8185611cda565b905081810360408301526121138184611cda565b9050949350505050565b60006040820190506121326000830185611f0f565b61213f6020830184611f0f565b9392505050565b600060608201905061215b6000830186611f0f565b6121686020830185611f0f565b6121756040830184611f0f565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156121a057600080fd5b8060405250919050565b600067ffffffffffffffff8211156121c157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156121e957600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612281826122c2565b9050919050565b6000612293826122c2565b9050919050565b60008115159050919050565b6000819050919050565b60006122bb82612276565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006122f7826122fe565b9050919050565b600061230982612310565b9050919050565b600061231b826122c2565b9050919050565b82818337600083830152505050565b60005b8381101561234f578082015181840152602081019050612334565b8381111561235e576000848401525b50505050565b6000601f19601f8301169050919050565b61237e81612276565b811461238957600080fd5b50565b61239581612288565b81146123a057600080fd5b50565b6123ac8161229a565b81146123b757600080fd5b50565b6123c3816122a6565b81146123ce57600080fd5b50565b6123da816122b0565b81146123e557600080fd5b50565b6123f1816122e2565b81146123fc57600080fd5b5056fea365627a7a72315820bc4abdb0252de70c56f345990f11e4b6fc09277d3d54066f5a016a28b3298a9c6c6578706572696d656e74616cf564736f6c63430005100040", - "sourceMap": "690:7372:26:-;;;810:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;810:23:26;690:7372;;;;;;", - "deployedSourceMap": "690:7372:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5491:1314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5491:1314:26;;;;;;;;;;;;;;;;:::i;:::-;;4369:1116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4369:1116:26;;;;;;;;;;;;;;;;:::i;:::-;;1651:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1651:321:26;;;;;;;;;;;;;;;;:::i;:::-;;6811:1249;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6811:1249:26;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5491:1314;5752:31;5815:22;5752:95;;5912:53;6022:23;6011:35;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6011:35:26;;;6060:30;;5968:132;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5968:132:26;;;5912:188;;6111:24;6211:15;:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6211:55:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6211:55:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6211:55:26;;;;;;;;;6164:148;;;:150;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6164:150:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6164:150:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6164:150:26;;;;;;;;;6111:213;;6380:56;6398:15;6423:11;6380:17;:56::i;:::-;6494:11;:21;;;6529:15;6558;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6558:32:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6558:32:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6558:32:26;;;;;;;;;6604:18;6636:40;6494:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6494:192:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6494:192:26;;;;6742:56;6760:15;6785:11;6742:17;:56::i;:::-;5491:1314;;;;;;;;;:::o;4369:1116::-;4570:38;;:::i;:::-;4635:7;;4611:77;;;;;;;;;4570:118;;4699:21;4752:10;:50;;;4723:116;;;:118;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4723:118:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4723:118:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4723:118:26;;;;;;;;;4699:142;;4903:9;4915:1;4903:13;;4898:137;4922:10;:22;;;:29;4918:1;:33;4898:137;;;4972:52;4983:13;4998:10;:22;;;5021:1;4998:25;;;;;;;;;;;;;;4972:10;:52::i;:::-;4953:3;;;;;;;4898:137;;;;5044:22;5081:9;5093:1;5081:13;;5076:222;5100:10;:28;;;:35;5096:1;:39;5076:222;;;5174:113;5211:13;5242:10;:28;;;5271:1;5242:31;;;;;;;;;;;;;;5174:19;:113::i;:::-;5156:131;;;;5137:3;;;;;;;5076:222;;;;5358:10;:26;;;:31;;5409:55;5451:12;5409:37;5441:4;5409:27;5428:7;5409:14;:18;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;:41;;:55;;;;:::i;:::-;5358:120;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;5358:120:26;;4369:1116;;;;;;;;:::o;1651:321::-;1777:18;1806:6;1798:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1798:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1798:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1798:28:26;;;;;;;;;1777:49;;1903:4;1857:50;;1864:10;1857:26;;;1884:6;1892;1857:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1857:42:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1857:42:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1857:42:26;;;;;;;;;:50;;;1836:129;;;;;;;;;;;;;;;;;;;;;;1651:321;;;:::o;6811:1249::-;6946:21;6981:28;7023:34;7082:31;7145:22;7082:95;;7188:24;7228:15;:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7228:44:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7228:44:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7228:44:26;;;;;;;;;7188:85;;7284:31;7318:11;:23;;;7342:5;7318:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7318:30:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7318:30:26;;;;;;39:16:-1;36:1;17:17;2:54;7318:30:26;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7318:30:26;;;;;;;;;7284:64;;7359:17;7386:18;7414:19;7443:12;7465:13;7494:6;7503:1;7494:10;;7489:565;7510:14;:21;7506:1;:25;7489:565;;;7564:14;7579:1;7564:17;;;;;;;;;;;;;;7552:29;;7613:9;7605:39;;;7645:5;7605:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7605:46:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7605:46:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7605:46:26;;;;;;;;;7595:56;;7689:9;7681:38;;;7720:5;7681:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7681:45:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7681:45:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7681:45:26;;;;;;;;;7665:61;;7761:1;7745:13;:17;7741:135;;;7818:9;7782:17;7800:14;7782:33;;;;;;;;;;;;;:45;;;;;;;;;;;7845:16;;;;;;;7741:135;7904:1;7894:7;:11;7890:154;;;7949:9;7925:11;7937:8;7925:21;;;;;;;;;;;;;:33;;;;;;;;;;;7976:10;;;;;;;8022:7;8005:24;;;;7890:154;7533:3;;;;;;;7489:565;;;;6811:1249;;;;;;;;;;;;;:::o;1029:305::-;1130:9;1159:12;1150:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1150:34:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1150:34:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1150:34:26;;;;;;;;;1130:55;;1204:1;1196:17;;;1251:3;1235:21;;1227:30;;;1279:1;1271:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1271:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1271:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1271:16:26;;;;;;;;;1309:1;1301:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1301:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1301:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1301:16:26;;;;;;;;;1196:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1196:131:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1196:131:26;;;;1029:305;;;:::o;1340:::-;1441:9;1470:12;1461:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1461:34:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1461:34:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1461:34:26;;;;;;;;;1441:55;;1515:1;1507:17;;;1562:3;1546:21;;1538:30;;;1590:1;1582:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1582:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1582:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1582:16:26;;;;;;;;;1620:1;1612:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1612:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1612:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1612:16:26;;;;;;;;;1507:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1507:131:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1507:131:26;;;;1340:305;;;:::o;3113:710::-;3228:22;3261:6;3253:36;;;3311:4;3253:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3253:73:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3253:73:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3253:73:26;;;;;;;;;3228:98;;3409:13;3399:23;;:6;:23;;;3395:360;;3438:18;3467:6;3459:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3459:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3459:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3459:28:26;;;;;;;;;3438:49;;3545:17;3565:94;3603:10;3631:14;3565:20;:94::i;:::-;3545:114;;3710:34;3722:10;3734:9;3710:11;:34::i;:::-;;3395:360;;;3765:51;3778:13;3793:6;3801:14;3765:12;:51::i;:::-;3113:710;;;:::o;3829:534::-;3931:7;3981:22;4014:6;4006:35;;;4063:4;4006:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4006:72:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4006:72:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4006:72:26;;;;;;;;;3981:97;;4114:41;4132:6;4140:14;4114:17;:41::i;:::-;4180:13;4170:23;;:6;:23;;;4166:75;;;4216:14;4209:21;;;;;4166:75;4251:18;4280:6;4272:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4272:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4272:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4272:28:26;;;;;;;;;4251:49;;4317:39;4329:10;4341:14;4317:11;:39::i;:::-;4310:46;;;;3829:534;;;;;:::o;1274:134:32:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;2525:212:24:-;2618:4;2658:33;2678:12;2658:19;:33::i;:::-;2641:76;;;2718:11;2641:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2641:89:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2641:89:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2641:89:24;;;;;;;;;2634:96;;2525:212;;;;:::o;514:160::-;599:4;622:45;634:12;648:9;664:1;622:11;:45::i;:::-;615:52;;514:160;;;;:::o;2463:408:26:-;2585:13;2575:23;;:6;:23;;;2571:294;;;2622:6;2614:27;;;2648:6;2614:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2614:43:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2614:43:26;;;;;2571:294;;;2688:24;2697:6;2705;2688:8;:24::i;:::-;2790:1;2759:6;2751:27;;;2779:6;2751:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2751:35:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2751:35:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2751:35:26;;;;;;;;;:40;2726:128;;;;;;;;;;;;;;;;;;;;;;2571:294;2463:408;;;:::o;2877:230::-;3032:1;2990:6;2982:32;;;3015:12;2982:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2982:46:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2982:46:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2982:46:26;;;;;;;;;:51;2961:139;;;;;;;;;;;;;;;;;;;;;;2877:230;;:::o;955:156:24:-;1034:4;1057:47;1069:12;1083:11;1101:1;1057:11;:47::i;:::-;1050:54;;955:156;;;;:::o;1732:187:32:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;337:171:24:-;411:7;288:42;437:50;;;488:12;437:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;437:64:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;437:64:24;;;;;;;;;430:71;;337:171;;;:::o;680:269::-;786:4;826:33;846:12;826:19;:33::i;:::-;809:84;;;900:9;911:14;938:2;932:3;:8;809:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;809:133:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;809:133:24;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;809:133:24;;;;;;;;;802:140;;680:269;;;;;:::o;1117:355::-;1215:4;1231:16;1250:33;1270:12;1250:19;:33::i;:::-;1231:52;;1301:12;1294:28;;;1323:8;1333:11;1294:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1294:51:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1294:51:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1294:51:24;;;;;;;;;;1380:8;1363:59;;;1423:11;1436:12;1461:2;1455:3;:8;1363:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1363:102:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1363:102:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1363:102:24;;;;;;;;;1356:109;;;1117:355;;;;;:::o;690:7372:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:146;;371:6;358:20;349:29;;383:41;418:5;383:41;;;343:86;;;;;454:699;;567:3;560:4;552:6;548:17;544:27;534:2;;585:1;582;575:12;534:2;622:6;609:20;644:76;659:60;712:6;659:60;;;644:76;;;635:85;;737:5;762:6;755:5;748:21;792:4;784:6;780:17;770:27;;814:4;809:3;805:14;798:21;;867:6;914:3;906:4;898:6;894:17;889:3;885:27;882:36;879:2;;;931:1;928;921:12;879:2;956:1;941:206;966:6;963:1;960:13;941:206;;;1024:3;1046:37;1079:3;1067:10;1046:37;;;1041:3;1034:50;1107:4;1102:3;1098:14;1091:21;;1135:4;1130:3;1126:14;1119:21;;998:149;988:1;985;981:9;976:14;;941:206;;;945:14;527:626;;;;;;;;1179:722;;1307:3;1300:4;1292:6;1288:17;1284:27;1274:2;;1325:1;1322;1315:12;1274:2;1355:6;1349:13;1377:80;1392:64;1449:6;1392:64;;;1377:80;;;1368:89;;1474:5;1499:6;1492:5;1485:21;1529:4;1521:6;1517:17;1507:27;;1551:4;1546:3;1542:14;1535:21;;1604:6;1651:3;1643:4;1635:6;1631:17;1626:3;1622:27;1619:36;1616:2;;;1668:1;1665;1658:12;1616:2;1693:1;1678:217;1703:6;1700:1;1697:13;1678:217;;;1761:3;1783:48;1827:3;1815:10;1783:48;;;1778:3;1771:61;1855:4;1850:3;1846:14;1839:21;;1883:4;1878:3;1874:14;1867:21;;1735:160;1725:1;1722;1718:9;1713:14;;1678:217;;;1682:14;1267:634;;;;;;;;1909:128;;1990:6;1984:13;1975:22;;2002:30;2026:5;2002:30;;;1969:68;;;;;2044:134;;2128:6;2122:13;2113:22;;2140:33;2167:5;2140:33;;;2107:71;;;;;2199:336;;;2313:3;2306:4;2298:6;2294:17;2290:27;2280:2;;2331:1;2328;2321:12;2280:2;2364:6;2351:20;2341:30;;2391:18;2383:6;2380:30;2377:2;;;2423:1;2420;2413:12;2377:2;2457:4;2449:6;2445:17;2433:29;;2508:3;2500:4;2492:6;2488:17;2478:8;2474:32;2471:41;2468:2;;;2525:1;2522;2515:12;2468:2;2273:262;;;;;;2543:174;;2647:6;2641:13;2632:22;;2659:53;2706:5;2659:53;;;2626:91;;;;;2775:1035;;2898:4;2886:9;2881:3;2877:19;2873:30;2870:2;;;2916:1;2913;2906:12;2870:2;2934:20;2949:4;2934:20;;;2925:29;;3015:1;3047:57;3100:3;3091:6;3080:9;3076:22;3047:57;;;3040:4;3033:5;3029:16;3022:83;2964:152;3184:2;3217:49;3262:3;3253:6;3242:9;3238:22;3217:49;;;3210:4;3203:5;3199:16;3192:75;3126:152;3363:2;3352:9;3348:18;3335:32;3387:18;3379:6;3376:30;3373:2;;;3419:1;3416;3409:12;3373:2;3454:70;3520:3;3511:6;3500:9;3496:22;3454:70;;;3447:4;3440:5;3436:16;3429:96;3288:248;3627:2;3616:9;3612:18;3599:32;3651:18;3643:6;3640:30;3637:2;;;3683:1;3680;3673:12;3637:2;3718:70;3784:3;3775:6;3764:9;3760:22;3718:70;;;3711:4;3704:5;3700:16;3693:96;3546:254;2864:946;;;;;3817:130;;3897:6;3884:20;3875:29;;3909:33;3936:5;3909:33;;;3869:78;;;;;3954:134;;4038:6;4032:13;4023:22;;4050:33;4077:5;4050:33;;;4017:71;;;;;4095:263;;4210:2;4198:9;4189:7;4185:23;4181:32;4178:2;;;4226:1;4223;4216:12;4178:2;4261:1;4278:64;4334:7;4325:6;4314:9;4310:22;4278:64;;;4268:74;;4240:108;4172:186;;;;;4365:366;;;4486:2;4474:9;4465:7;4461:23;4457:32;4454:2;;;4502:1;4499;4492:12;4454:2;4537:1;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;;;4544:63;;4516:97;4644:2;4662:53;4707:7;4698:6;4687:9;4683:22;4662:53;;;4652:63;;4623:98;4448:283;;;;;;4738:366;;;4859:2;4847:9;4838:7;4834:23;4830:32;4827:2;;;4875:1;4872;4865:12;4827:2;4910:1;4927:53;4972:7;4963:6;4952:9;4948:22;4927:53;;;4917:63;;4889:97;5017:2;5035:53;5080:7;5071:6;5060:9;5056:22;5035:53;;;5025:63;;4996:98;4821:283;;;;;;5111:392;;5251:2;5239:9;5230:7;5226:23;5222:32;5219:2;;;5267:1;5264;5257:12;5219:2;5323:1;5312:9;5308:17;5302:24;5346:18;5338:6;5335:30;5332:2;;;5378:1;5375;5368:12;5332:2;5398:89;5479:7;5470:6;5459:9;5455:22;5398:89;;;5388:99;;5281:212;5213:290;;;;;5510:257;;5622:2;5610:9;5601:7;5597:23;5593:32;5590:2;;;5638:1;5635;5628:12;5590:2;5673:1;5690:61;5743:7;5734:6;5723:9;5719:22;5690:61;;;5680:71;;5652:105;5584:183;;;;;5774:263;;5889:2;5877:9;5868:7;5864:23;5860:32;5857:2;;;5905:1;5902;5895:12;5857:2;5940:1;5957:64;6013:7;6004:6;5993:9;5989:22;5957:64;;;5947:74;;5919:108;5851:186;;;;;6044:303;;6179:2;6167:9;6158:7;6154:23;6150:32;6147:2;;;6195:1;6192;6185:12;6147:2;6230:1;6247:84;6323:7;6314:6;6303:9;6299:22;6247:84;;;6237:94;;6209:128;6141:206;;;;;6354:395;;6492:2;6480:9;6471:7;6467:23;6463:32;6460:2;;;6508:1;6505;6498:12;6460:2;6571:1;6560:9;6556:17;6543:31;6594:18;6586:6;6583:30;6580:2;;;6626:1;6623;6616:12;6580:2;6646:87;6725:7;6716:6;6705:9;6701:22;6646:87;;;6636:97;;6522:217;6454:295;;;;;6756:263;;6871:2;6859:9;6850:7;6846:23;6842:32;6839:2;;;6887:1;6884;6877:12;6839:2;6922:1;6939:64;6995:7;6986:6;6975:9;6971:22;6939:64;;;6929:74;;6901:108;6833:186;;;;;7026:883;;;;;;;7225:3;7213:9;7204:7;7200:23;7196:33;7193:2;;;7242:1;7239;7232:12;7193:2;7277:1;7294:53;7339:7;7330:6;7319:9;7315:22;7294:53;;;7284:63;;7256:97;7384:2;7402:53;7447:7;7438:6;7427:9;7423:22;7402:53;;;7392:63;;7363:98;7492:2;7510:61;7563:7;7554:6;7543:9;7539:22;7510:61;;;7500:71;;7471:106;7608:2;7626:53;7671:7;7662:6;7651:9;7647:22;7626:53;;;7616:63;;7587:98;7744:3;7733:9;7729:19;7716:33;7769:18;7761:6;7758:30;7755:2;;;7801:1;7798;7791:12;7755:2;7829:64;7885:7;7876:6;7865:9;7861:22;7829:64;;;7819:74;;;;7695:204;7187:722;;;;;;;;;7916:741;;;;;;8090:3;8078:9;8069:7;8065:23;8061:33;8058:2;;;8107:1;8104;8097:12;8058:2;8142:1;8159:53;8204:7;8195:6;8184:9;8180:22;8159:53;;;8149:63;;8121:97;8249:2;8267:53;8312:7;8303:6;8292:9;8288:22;8267:53;;;8257:63;;8228:98;8357:2;8375:53;8420:7;8411:6;8400:9;8396:22;8375:53;;;8365:63;;8336:98;8493:2;8482:9;8478:18;8465:32;8517:18;8509:6;8506:30;8503:2;;;8549:1;8546;8539:12;8503:2;8577:64;8633:7;8624:6;8613:9;8609:22;8577:64;;;8567:74;;;;8444:203;8052:605;;;;;;;;;8665:173;;8752:46;8794:3;8786:6;8752:46;;;8827:4;8822:3;8818:14;8804:28;;8745:93;;;;;8846:142;8937:45;8976:5;8937:45;;;8932:3;8925:58;8919:69;;;8995:103;9068:24;9086:5;9068:24;;;9063:3;9056:37;9050:48;;;9105:113;9188:24;9206:5;9188:24;;;9183:3;9176:37;9170:48;;;9256:690;;9401:54;9449:5;9401:54;;;9468:86;9547:6;9542:3;9468:86;;;9461:93;;9575:56;9625:5;9575:56;;;9651:7;9679:1;9664:260;9689:6;9686:1;9683:13;9664:260;;;9756:6;9750:13;9777:63;9836:3;9821:13;9777:63;;;9770:70;;9857:60;9910:6;9857:60;;;9847:70;;9721:203;9711:1;9708;9704:9;9699:14;;9664:260;;;9668:14;9937:3;9930:10;;9380:566;;;;;;;;9954:113;10037:24;10055:5;10037:24;;;10032:3;10025:37;10019:48;;;10097:310;;10229:88;10310:6;10305:3;10229:88;;;10222:95;;10329:43;10365:6;10360:3;10353:5;10329:43;;;10394:6;10389:3;10385:16;10378:23;;10215:192;;;;;;10415:343;;10525:38;10557:5;10525:38;;;10575:70;10638:6;10633:3;10575:70;;;10568:77;;10650:52;10695:6;10690:3;10683:4;10676:5;10672:16;10650:52;;;10723:29;10745:6;10723:29;;;10718:3;10714:39;10707:46;;10505:253;;;;;;10765:356;;10893:38;10925:5;10893:38;;;10943:88;11024:6;11019:3;10943:88;;;10936:95;;11036:52;11081:6;11076:3;11069:4;11062:5;11058:16;11036:52;;;11109:6;11104:3;11100:16;11093:23;;10873:248;;;;;;11128:347;;11240:39;11273:5;11240:39;;;11291:71;11355:6;11350:3;11291:71;;;11284:78;;11367:52;11412:6;11407:3;11400:4;11393:5;11389:16;11367:52;;;11440:29;11462:6;11440:29;;;11435:3;11431:39;11424:46;;11220:255;;;;;;11483:378;;11643:67;11707:2;11702:3;11643:67;;;11636:74;;11743:34;11739:1;11734:3;11730:11;11723:55;11812:11;11807:2;11802:3;11798:12;11791:33;11852:2;11847:3;11843:12;11836:19;;11629:232;;;;11870:329;;12030:67;12094:2;12089:3;12030:67;;;12023:74;;12130:31;12126:1;12121:3;12117:11;12110:52;12190:2;12185:3;12181:12;12174:19;;12016:183;;;;12208:296;;12385:83;12466:1;12461:3;12385:83;;;12378:90;;12496:1;12491:3;12487:11;12480:18;;12371:133;;;;12513:332;;12673:67;12737:2;12732:3;12673:67;;;12666:74;;12773:34;12769:1;12764:3;12760:11;12753:55;12836:2;12831:3;12827:12;12820:19;;12659:186;;;;12853:113;12936:24;12954:5;12936:24;;;12931:3;12924:37;12918:48;;;12973:439;;13173:93;13262:3;13253:6;13173:93;;;13166:100;;13284:103;13383:3;13374:6;13366;13284:103;;;13277:110;;13404:3;13397:10;;13154:258;;;;;;;13419:370;;13617:147;13760:3;13617:147;;;13610:154;;13781:3;13774:10;;13598:191;;;;13796:213;;13914:2;13903:9;13899:18;13891:26;;13928:71;13996:1;13985:9;13981:17;13972:6;13928:71;;;13885:124;;;;;14016:229;;14142:2;14131:9;14127:18;14119:26;;14156:79;14232:1;14221:9;14217:17;14208:6;14156:79;;;14113:132;;;;;14252:647;;14480:3;14469:9;14465:19;14457:27;;14495:79;14571:1;14560:9;14556:17;14547:6;14495:79;;;14585:72;14653:2;14642:9;14638:18;14629:6;14585:72;;;14668;14736:2;14725:9;14721:18;14712:6;14668:72;;;14788:9;14782:4;14778:20;14773:2;14762:9;14758:18;14751:48;14813:76;14884:4;14875:6;14813:76;;;14805:84;;14451:448;;;;;;;;14906:324;;15052:2;15041:9;15037:18;15029:26;;15066:71;15134:1;15123:9;15119:17;15110:6;15066:71;;;15148:72;15216:2;15205:9;15201:18;15192:6;15148:72;;;15023:207;;;;;;15237:435;;15411:2;15400:9;15396:18;15388:26;;15425:71;15493:1;15482:9;15478:17;15469:6;15425:71;;;15507:72;15575:2;15564:9;15560:18;15551:6;15507:72;;;15590;15658:2;15647:9;15643:18;15634:6;15590:72;;;15382:290;;;;;;;15679:301;;15817:2;15806:9;15802:18;15794:26;;15867:9;15861:4;15857:20;15853:1;15842:9;15838:17;15831:47;15892:78;15965:4;15956:6;15892:78;;;15884:86;;15788:192;;;;;15987:407;;16178:2;16167:9;16163:18;16155:26;;16228:9;16222:4;16218:20;16214:1;16203:9;16199:17;16192:47;16253:131;16379:4;16253:131;;;16245:139;;16149:245;;;;16401:407;;16592:2;16581:9;16577:18;16569:26;;16642:9;16636:4;16632:20;16628:1;16617:9;16613:17;16606:47;16667:131;16793:4;16667:131;;;16659:139;;16563:245;;;;16815:407;;17006:2;16995:9;16991:18;16983:26;;17056:9;17050:4;17046:20;17042:1;17031:9;17027:17;17020:47;17081:131;17207:4;17081:131;;;17073:139;;16977:245;;;;17229:213;;17347:2;17336:9;17332:18;17324:26;;17361:71;17429:1;17418:9;17414:17;17405:6;17361:71;;;17318:124;;;;;17449:731;;17723:2;17712:9;17708:18;17700:26;;17737:71;17805:1;17794:9;17790:17;17781:6;17737:71;;;17856:9;17850:4;17846:20;17841:2;17830:9;17826:18;17819:48;17881:108;17984:4;17975:6;17881:108;;;17873:116;;18037:9;18031:4;18027:20;18022:2;18011:9;18007:18;18000:48;18062:108;18165:4;18156:6;18062:108;;;18054:116;;17694:486;;;;;;;18187:324;;18333:2;18322:9;18318:18;18310:26;;18347:71;18415:1;18404:9;18400:17;18391:6;18347:71;;;18429:72;18497:2;18486:9;18482:18;18473:6;18429:72;;;18304:207;;;;;;18518:435;;18692:2;18681:9;18677:18;18669:26;;18706:71;18774:1;18763:9;18759:17;18750:6;18706:71;;;18788:72;18856:2;18845:9;18841:18;18832:6;18788:72;;;18871;18939:2;18928:9;18924:18;18915:6;18871:72;;;18663:290;;;;;;;18960:256;;19022:2;19016:9;19006:19;;19060:4;19052:6;19048:17;19159:6;19147:10;19144:22;19123:18;19111:10;19108:34;19105:62;19102:2;;;19180:1;19177;19170:12;19102:2;19200:10;19196:2;19189:22;19000:216;;;;;19223:300;;19378:18;19370:6;19367:30;19364:2;;;19410:1;19407;19400:12;19364:2;19445:4;19437:6;19433:17;19425:25;;19508:4;19502;19498:15;19490:23;;19301:222;;;;19530:304;;19689:18;19681:6;19678:30;19675:2;;;19721:1;19718;19711:12;19675:2;19756:4;19748:6;19744:17;19736:25;;19819:4;19813;19809:15;19801:23;;19612:222;;;;19841:151;;19927:3;19919:11;;19965:4;19960:3;19956:14;19948:22;;19913:79;;;;19999:137;;20108:5;20102:12;20092:22;;20073:63;;;;20143:121;;20236:5;20230:12;20220:22;;20201:63;;;;20271:122;;20365:5;20359:12;20349:22;;20330:63;;;;20400:108;;20498:4;20493:3;20489:14;20481:22;;20475:33;;;;20516:178;;20646:6;20641:3;20634:19;20683:4;20678:3;20674:14;20659:29;;20627:67;;;;;20703:162;;20817:6;20812:3;20805:19;20854:4;20849:3;20845:14;20830:29;;20798:67;;;;;20874:144;;21009:3;20994:18;;20987:31;;;;;21027:163;;21142:6;21137:3;21130:19;21179:4;21174:3;21170:14;21155:29;;21123:67;;;;;21198:91;;21260:24;21278:5;21260:24;;;21249:35;;21243:46;;;;21296:99;;21366:24;21384:5;21366:24;;;21355:35;;21349:46;;;;21402:85;;21475:5;21468:13;21461:21;21450:32;;21444:43;;;;21494:72;;21556:5;21545:16;;21539:27;;;;21573:111;;21655:24;21673:5;21655:24;;;21644:35;;21638:46;;;;21691:121;;21764:42;21757:5;21753:54;21742:65;;21736:76;;;;21819:72;;21881:5;21870:16;;21864:27;;;;21898:129;;21985:37;22016:5;21985:37;;;21972:50;;21966:61;;;;22034:121;;22113:37;22144:5;22113:37;;;22100:50;;22094:61;;;;22162:108;;22241:24;22259:5;22241:24;;;22228:37;;22222:48;;;;22278:145;22359:6;22354:3;22349;22336:30;22415:1;22406:6;22401:3;22397:16;22390:27;22329:94;;;;22432:268;22497:1;22504:101;22518:6;22515:1;22512:13;22504:101;;;22594:1;22589:3;22585:11;22579:18;22575:1;22570:3;22566:11;22559:39;22540:2;22537:1;22533:10;22528:15;;22504:101;;;22620:6;22617:1;22614:13;22611:2;;;22685:1;22676:6;22671:3;22667:16;22660:27;22611:2;22481:219;;;;;22708:97;;22796:2;22792:7;22787:2;22780:5;22776:14;22772:28;22762:38;;22756:49;;;;22813:117;22882:24;22900:5;22882:24;;;22875:5;22872:35;22862:2;;22921:1;22918;22911:12;22862:2;22856:74;;22937:133;23014:32;23040:5;23014:32;;;23007:5;23004:43;22994:2;;23061:1;23058;23051:12;22994:2;22988:82;;23077:111;23143:21;23158:5;23143:21;;;23136:5;23133:32;23123:2;;23179:1;23176;23169:12;23123:2;23117:71;;23195:117;23264:24;23282:5;23264:24;;;23257:5;23254:35;23244:2;;23303:1;23300;23293:12;23244:2;23238:74;;23319:157;23408:44;23446:5;23408:44;;;23401:5;23398:55;23388:2;;23467:1;23464;23457:12;23388:2;23382:94;;23483:117;23552:24;23570:5;23552:24;;;23545:5;23542:35;23532:2;;23591:1;23588;23581:12;23532:2;23526:74;", - "source": "/*\n A manager to exit all positions (collateral and debt)\n*/\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\nimport \"../interfaces/IERC20.sol\";\n\nimport \"../interfaces/compound/IComptroller.sol\";\nimport \"../interfaces/compound/ICEther.sol\";\nimport \"../interfaces/compound/ICToken.sol\";\n\nimport \"../interfaces/aave/ILendingPoolAddressesProvider.sol\";\nimport \"../interfaces/aave/ILendingPool.sol\";\nimport \"../interfaces/aave/ILendingPoolParametersProvider.sol\";\n\nimport \"../lib/uniswap/UniswapLiteBase.sol\";\nimport \"../lib/dapphub/Guard.sol\";\n\nimport \"../registries/AddressRegistry.sol\";\n\nimport \"../proxies/DACProxy.sol\";\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\n\n\ncontract DedgeExitManager is UniswapLiteBase {\n using SafeMath for uint256;\n\n function() external payable {}\n\n constructor() public {}\n\n struct ExitPositionCalldata {\n address payable exitUserAddress;\n address addressRegistryAddress;\n address[] debtCTokens;\n address[] collateralCTokens;\n }\n\n function _proxyGuardPermit(address payable proxyAddress, address src)\n internal\n {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).permit(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _proxyGuardForbid(address payable proxyAddress, address src)\n internal\n {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).forbid(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _approve(address cToken, uint256 amount) public {\n // Approves CToken contract to call `transferFrom`\n address underlying = ICToken(cToken).underlying();\n require(\n IERC20(underlying).approve(cToken, amount) == true,\n \"cmpnd-mgr-ctoken-approved-failed\"\n );\n }\n\n function _transfer(\n address CEtherAddress,\n address cToken,\n address recipient,\n uint256 amount\n ) internal {\n if (cToken == CEtherAddress) {\n recipient.call.value(amount)(\"\");\n } else {\n require(\n IERC20(ICToken(cToken).underlying()).transfer(\n recipient,\n amount\n ),\n \"cmpnd-mgr-transfer-failed\"\n );\n }\n }\n\n function _repayBorrow(address CEtherAddress, address cToken, uint256 amount)\n internal\n {\n if (cToken == CEtherAddress) {\n ICEther(cToken).repayBorrow.value(amount)();\n } else {\n _approve(cToken, amount);\n require(\n ICToken(cToken).repayBorrow(amount) == 0,\n \"cmpnd-mgr-ctoken-repay-failed\"\n );\n }\n }\n\n function _redeemUnderlying(address cToken, uint256 redeemTokens) internal {\n require(\n ICToken(cToken).redeemUnderlying(redeemTokens) == 0,\n \"cmpnd-mgr-ctoken-redeem-underlying-failed\"\n );\n }\n\n function _repayDebt(address CEtherAddress, address cToken) internal {\n // How much have we borrowed\n uint256 borrowedAmount = ICToken(cToken).borrowBalanceCurrent(\n address(this)\n );\n\n // Always assume we have enough ETH to repay debt\n if (cToken != CEtherAddress) {\n address underlying = ICToken(cToken).underlying();\n\n // Get ETH needed to get ERC20\n uint256 ethAmount = _getEthToTokenOutput(\n underlying,\n borrowedAmount\n );\n\n // Convert ETH to token\n _ethToToken(underlying, ethAmount);\n }\n\n _repayBorrow(CEtherAddress, cToken, borrowedAmount);\n }\n\n function _retrieveCollateral(address CEtherAddress, address cToken)\n internal\n returns (uint256)\n {\n // Supplied amount\n uint256 suppliedAmount = ICToken(cToken).balanceOfUnderlying(\n address(this)\n );\n\n // Redeems token\n _redeemUnderlying(cToken, suppliedAmount);\n\n if (cToken == CEtherAddress) {\n return suppliedAmount;\n }\n\n address underlying = ICToken(cToken).underlying();\n return _tokenToEth(underlying, suppliedAmount);\n }\n\n function exitPositionsPostLoan(\n uint256 _amount,\n uint256 _fee,\n uint256 _protocolFee,\n bytes calldata _params\n ) external {\n // We should now have funds\n ExitPositionCalldata memory epCalldata = abi.decode(\n _params,\n (ExitPositionCalldata)\n );\n\n address CEtherAddress = AddressRegistry(\n epCalldata\n .addressRegistryAddress\n )\n .CEtherAddress();\n\n // Repay debt and retrieve collateral\n for (uint256 i = 0; i < epCalldata.debtCTokens.length; i++) {\n _repayDebt(CEtherAddress, epCalldata.debtCTokens[i]);\n }\n uint256 totalEthAmount;\n for (uint256 i = 0; i < epCalldata.collateralCTokens.length; i++) {\n totalEthAmount += _retrieveCollateral(\n CEtherAddress,\n epCalldata.collateralCTokens[i]\n );\n }\n\n // Repays ETH - fees back to exit address\n epCalldata.exitUserAddress.call.value(\n totalEthAmount.sub(_amount).sub(_fee).sub(_protocolFee)\n )(\"\");\n }\n\n function exitPositions(\n uint256 totalEthDebtAmount,\n address dedgeExitManagerAddress,\n address payable dacProxyAddress,\n address addressRegistryAddress,\n bytes calldata executeOperationCalldataParams\n ) external {\n AddressRegistry addressRegistry = AddressRegistry(\n addressRegistryAddress\n );\n\n // Injects target address into calldataParams\n bytes memory addressAndExecuteOperationCalldataParams = abi\n .encodePacked(\n abi.encode(dedgeExitManagerAddress),\n executeOperationCalldataParams\n );\n\n ILendingPool lendingPool = ILendingPool(\n ILendingPoolAddressesProvider(\n addressRegistry.AaveLendingPoolAddressProviderAddress()\n )\n .getLendingPool()\n );\n\n // Approve lendingPool to call proxy\n _proxyGuardPermit(dacProxyAddress, address(lendingPool));\n\n // 3. Flashloan ETH with relevant data\n lendingPool.flashLoan(\n dacProxyAddress,\n addressRegistry.AaveEthAddress(),\n totalEthDebtAmount,\n addressAndExecuteOperationCalldataParams\n );\n\n // Forbids lendingPool to call proxy\n _proxyGuardForbid(dacProxyAddress, address(lendingPool));\n }\n\n function getExitPositionsData(address addressRegistryAddress, address owner)\n public\n view\n returns (\n uint256 ethDebtAmount,\n address[] memory debtAddress,\n address[] memory collateralAddress\n )\n {\n AddressRegistry addressRegistry = AddressRegistry(\n addressRegistryAddress\n );\n\n IComptroller comptroller = IComptroller(addressRegistry.CompoundComptrollerAddress());\n\n address[] memory marketsEntered = comptroller.getAssetsIn(owner);\n\n address curMarket;\n uint curCollateral;\n uint curCollateralI;\n uint curDebt;\n uint curDebtI;\n\n for (uint i = 0; i < marketsEntered.length; i++) {\n curMarket = marketsEntered[i];\n curDebt = ICToken(curMarket).borrowBalanceCurrent(owner);\n curCollateral = ICToken(curMarket).balanceOfUnderlying(owner);\n\n if (curCollateral > 0) {\n collateralAddress[curCollateralI] = curMarket;\n curCollateralI++;\n }\n\n if (curDebt > 0) {\n debtAddress[curDebtI] = curMarket;\n curDebtI++;\n\n ethDebtAmount += curDebt;\n }\n }\n }\n}\n", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"_approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalEthDebtAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dedgeExitManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"exitPositions\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"exitPositionsPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol\":\"DedgeExitManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol\":{\"keccak256\":\"0x98f7835be71453686e6bef2dae399bb08be4cfb6dfce3ead2e1d29c29df91d51\",\"urls\":[\"bzz-raw://3ffe31654a7be90ea4a7966fc387c47444bfe52cd29cfdc72bcfc84854096b70\",\"dweb:/ipfs/QmWKWZdeaTkS4LbdD9S26UHU13ki3Svq2zjMiNRwHpR4AH\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50611ef2806100206000396000f3fe6080604052600436106100345760003560e01c8063642c3dfa146100365780636889dfe11461005f5780637b7d722514610088575b005b34801561004257600080fd5b5061005d60048036036100589190810190611751565b6100b1565b005b34801561006b57600080fd5b50610086600480360361008191908101906117e3565b610309565b005b34801561009457600080fd5b506100af60048036036100aa9190810190611630565b610525565b005b60008390506060866040516020016100c99190611aa2565b60405160208183030381529060405284846040516020016100ec93929190611a67565b604051602081830303815290604052905060008273ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014557600080fd5b505afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061017d9190810190611607565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c257600080fd5b505afa1580156101d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101fa9190810190611607565b9050610206878261067f565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de888573ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561026957600080fd5b505afa15801561027d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102a19190810190611607565b8c866040518563ffffffff1660e01b81526004016102c29493929190611abd565b600060405180830381600087803b1580156102dc57600080fd5b505af11580156102f0573d6000803e3d6000fd5b505050506102fe8782610881565b505050505050505050565b61031161127f565b828261032091908101906116e7565b905060008160200151905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561037357600080fd5b505afa158015610387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103ab9190810190611607565b905060008090505b83604001515181101561040e5761040182856040015183815181106103d457fe5b602002602001015160000151866040015184815181106103f057fe5b602002602001015160200151610a83565b80806001019150506103b3565b50600080600090505b84606001515181101561047657610465838660600151838151811061043857fe5b6020026020010151600001518760600151848151811061045457fe5b602002602001015160200151610b64565b820191508080600101915050610417565b50836000015173ffffffffffffffffffffffffffffffffffffffff166104c9886104bb8b6104ad8e87610c4390919063ffffffff16565b610c4390919063ffffffff16565b610c4390919063ffffffff16565b6040516104d590611a8d565b60006040518083038185875af1925050503d8060008114610512576040519150601f19603f3d011682016040523d82523d6000602084013e610517565b606091505b505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105a59190810190611607565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016105e6929190611b09565b602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610638919081019061166c565b15151461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190611bcb565b60405180910390fd5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c757600080fd5b505afa1580156106db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106ff91908101906116be565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107ae9190810190611695565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082c9190810190611695565b6040518463ffffffff1660e01b815260040161084a93929190611b32565b600060405180830381600087803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c957600080fd5b505afa1580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061090191908101906116be565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561097857600080fd5b505afa15801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109b09190810190611695565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156109f657600080fd5b505afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2e9190810190611695565b6040518463ffffffff1660e01b8152600401610a4c93929190611b32565b600060405180830381600087803b158015610a6657600080fd5b505af1158015610a7a573d6000803e3d6000fd5b50505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610b545760008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610afe57600080fd5b505afa158015610b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b369190810190611607565b90506000610b448284610c8d565b9050610b508282610d28565b5050505b610b5f838383610d3e565b505050565b6000610b708383610eb5565b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bac57819050610c3c565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c2c9190810190611607565b9050610c388184610f8c565b9150505b9392505050565b6000610c8583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fa2565b905092915050565b6000610c9883610ffd565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401610cd09190611beb565b60206040518083038186803b158015610ce857600080fd5b505afa158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d209190810190611728565b905092915050565b6000610d36838360016110a3565b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd8578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610dba57600080fd5b505af1158015610dce573d6000803e3d6000fd5b5050505050610eb0565b610de28282610525565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401610e1d9190611beb565b602060405180830381600087803b158015610e3757600080fd5b505af1158015610e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6f9190810190611728565b14610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690611bab565b60405180910390fd5b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b8152600401610ef09190611beb565b602060405180830381600087803b158015610f0a57600080fd5b505af1158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f429190810190611728565b905060008114610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90611b8b565b60405180910390fd5b505050565b6000610f9a83836001611147565b905092915050565b6000838311158290610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19190611b69565b60405180910390fd5b5060008385039050809150509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161104c9190611aa2565b60206040518083038186803b15801561106457600080fd5b505afa158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061109c9190810190611607565b9050919050565b60006110ae84610ffd565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b81526004016110ec929190611c06565b6020604051808303818588803b15801561110557600080fd5b505af1158015611119573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525061113e9190810190611728565b90509392505050565b60008061115385610ffd565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401611190929190611b09565b602060405180830381600087803b1580156111aa57600080fd5b505af11580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111e2919081019061166c565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b815260040161122393929190611c2f565b602060405180830381600087803b15801561123d57600080fd5b505af1158015611251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112759190810190611728565b9150509392505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b6000813590506112e281611e25565b92915050565b6000815190506112f781611e25565b92915050565b60008135905061130c81611e3c565b92915050565b600082601f83011261132357600080fd5b813561133661133182611c93565b611c66565b9150818183526020840193506020810190508385604084028201111561135b57600080fd5b60005b8381101561138b578161137188826114a1565b84526020840193506040830192505060018101905061135e565b5050505092915050565b600082601f8301126113a657600080fd5b81356113b96113b482611cbb565b611c66565b915081818352602084019350602081019050838560408402820111156113de57600080fd5b60005b8381101561140e57816113f488826114ed565b8452602084019350604083019250506001810190506113e1565b5050505092915050565b60008151905061142781611e53565b92915050565b60008151905061143c81611e6a565b92915050565b60008083601f84011261145457600080fd5b8235905067ffffffffffffffff81111561146d57600080fd5b60208301915083600182028301111561148557600080fd5b9250929050565b60008151905061149b81611e81565b92915050565b6000604082840312156114b357600080fd5b6114bd6040611c66565b905060006114cd848285016112d3565b60008301525060206114e1848285016115dd565b60208301525092915050565b6000604082840312156114ff57600080fd5b6115096040611c66565b90506000611519848285016112d3565b600083015250602061152d848285016115dd565b60208301525092915050565b60006080828403121561154b57600080fd5b6115556080611c66565b90506000611565848285016112fd565b6000830152506020611579848285016112d3565b602083015250604082013567ffffffffffffffff81111561159957600080fd5b6115a584828501611395565b604083015250606082013567ffffffffffffffff8111156115c557600080fd5b6115d184828501611312565b60608301525092915050565b6000813590506115ec81611e98565b92915050565b60008151905061160181611e98565b92915050565b60006020828403121561161957600080fd5b6000611627848285016112e8565b91505092915050565b6000806040838503121561164357600080fd5b6000611651858286016112d3565b9250506020611662858286016115dd565b9150509250929050565b60006020828403121561167e57600080fd5b600061168c84828501611418565b91505092915050565b6000602082840312156116a757600080fd5b60006116b58482850161142d565b91505092915050565b6000602082840312156116d057600080fd5b60006116de8482850161148c565b91505092915050565b6000602082840312156116f957600080fd5b600082013567ffffffffffffffff81111561171357600080fd5b61171f84828501611539565b91505092915050565b60006020828403121561173a57600080fd5b6000611748848285016115f2565b91505092915050565b60008060008060008060a0878903121561176a57600080fd5b600061177889828a016115dd565b965050602061178989828a016112d3565b955050604061179a89828a016112fd565b94505060606117ab89828a016112d3565b935050608087013567ffffffffffffffff8111156117c857600080fd5b6117d489828a01611442565b92509250509295509295509295565b6000806000806000608086880312156117fb57600080fd5b6000611809888289016115dd565b955050602061181a888289016115dd565b945050604061182b888289016115dd565b935050606086013567ffffffffffffffff81111561184857600080fd5b61185488828901611442565b92509250509295509295909350565b61186c81611d9c565b82525050565b61187b81611d26565b82525050565b61188a81611d56565b82525050565b600061189c8385611d0a565b93506118a9838584611dd2565b82840190509392505050565b60006118c082611ce3565b6118ca8185611cf9565b93506118da818560208601611de1565b6118e381611e14565b840191505092915050565b60006118f982611ce3565b6119038185611d0a565b9350611913818560208601611de1565b80840191505092915050565b600061192a82611cee565b6119348185611d15565b9350611944818560208601611de1565b61194d81611e14565b840191505092915050565b6000611965602983611d15565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b60006119cb601d83611d15565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000611a0b600083611d0a565b9150600082019050919050565b6000611a25602083611d15565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b611a6181611d92565b82525050565b6000611a7382866118ee565b9150611a80828486611890565b9150819050949350505050565b6000611a98826119fe565b9150819050919050565b6000602082019050611ab76000830184611872565b92915050565b6000608082019050611ad26000830187611863565b611adf6020830186611872565b611aec6040830185611a58565b8181036060830152611afe81846118b5565b905095945050505050565b6000604082019050611b1e6000830185611872565b611b2b6020830184611a58565b9392505050565b6000606082019050611b476000830186611881565b611b546020830185611881565b611b616040830184611881565b949350505050565b60006020820190508181036000830152611b83818461191f565b905092915050565b60006020820190508181036000830152611ba481611958565b9050919050565b60006020820190508181036000830152611bc4816119be565b9050919050565b60006020820190508181036000830152611be481611a18565b9050919050565b6000602082019050611c006000830184611a58565b92915050565b6000604082019050611c1b6000830185611a58565b611c286020830184611a58565b9392505050565b6000606082019050611c446000830186611a58565b611c516020830185611a58565b611c5e6040830184611a58565b949350505050565b6000604051905081810181811067ffffffffffffffff82111715611c8957600080fd5b8060405250919050565b600067ffffffffffffffff821115611caa57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115611cd257600080fd5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611d3182611d72565b9050919050565b6000611d4382611d72565b9050919050565b60008115159050919050565b6000819050919050565b6000611d6b82611d26565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611da782611dae565b9050919050565b6000611db982611dc0565b9050919050565b6000611dcb82611d72565b9050919050565b82818337600083830152505050565b60005b83811015611dff578082015181840152602081019050611de4565b83811115611e0e576000848401525b50505050565b6000601f19601f8301169050919050565b611e2e81611d26565b8114611e3957600080fd5b50565b611e4581611d38565b8114611e5057600080fd5b50565b611e5c81611d4a565b8114611e6757600080fd5b50565b611e7381611d56565b8114611e7e57600080fd5b50565b611e8a81611d60565b8114611e9557600080fd5b50565b611ea181611d92565b8114611eac57600080fd5b5056fea365627a7a72315820d4535111e47e76ba1c1532944b21bea901b6f14e2064c60a2463ff786e419f396c6578706572696d656e74616cf564736f6c63430005100040", + "deployedBytecode": "0x6080604052600436106100345760003560e01c8063642c3dfa146100365780636889dfe11461005f5780637b7d722514610088575b005b34801561004257600080fd5b5061005d60048036036100589190810190611751565b6100b1565b005b34801561006b57600080fd5b50610086600480360361008191908101906117e3565b610309565b005b34801561009457600080fd5b506100af60048036036100aa9190810190611630565b610525565b005b60008390506060866040516020016100c99190611aa2565b60405160208183030381529060405284846040516020016100ec93929190611a67565b604051602081830303815290604052905060008273ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014557600080fd5b505afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061017d9190810190611607565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c257600080fd5b505afa1580156101d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101fa9190810190611607565b9050610206878261067f565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de888573ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561026957600080fd5b505afa15801561027d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102a19190810190611607565b8c866040518563ffffffff1660e01b81526004016102c29493929190611abd565b600060405180830381600087803b1580156102dc57600080fd5b505af11580156102f0573d6000803e3d6000fd5b505050506102fe8782610881565b505050505050505050565b61031161127f565b828261032091908101906116e7565b905060008160200151905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561037357600080fd5b505afa158015610387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103ab9190810190611607565b905060008090505b83604001515181101561040e5761040182856040015183815181106103d457fe5b602002602001015160000151866040015184815181106103f057fe5b602002602001015160200151610a83565b80806001019150506103b3565b50600080600090505b84606001515181101561047657610465838660600151838151811061043857fe5b6020026020010151600001518760600151848151811061045457fe5b602002602001015160200151610b64565b820191508080600101915050610417565b50836000015173ffffffffffffffffffffffffffffffffffffffff166104c9886104bb8b6104ad8e87610c4390919063ffffffff16565b610c4390919063ffffffff16565b610c4390919063ffffffff16565b6040516104d590611a8d565b60006040518083038185875af1925050503d8060008114610512576040519150601f19603f3d011682016040523d82523d6000602084013e610517565b606091505b505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105a59190810190611607565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016105e6929190611b09565b602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610638919081019061166c565b15151461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190611bcb565b60405180910390fd5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c757600080fd5b505afa1580156106db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106ff91908101906116be565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107ae9190810190611695565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082c9190810190611695565b6040518463ffffffff1660e01b815260040161084a93929190611b32565b600060405180830381600087803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c957600080fd5b505afa1580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061090191908101906116be565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561097857600080fd5b505afa15801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109b09190810190611695565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156109f657600080fd5b505afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2e9190810190611695565b6040518463ffffffff1660e01b8152600401610a4c93929190611b32565b600060405180830381600087803b158015610a6657600080fd5b505af1158015610a7a573d6000803e3d6000fd5b50505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610b545760008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610afe57600080fd5b505afa158015610b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b369190810190611607565b90506000610b448284610c8d565b9050610b508282610d28565b5050505b610b5f838383610d3e565b505050565b6000610b708383610eb5565b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bac57819050610c3c565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c2c9190810190611607565b9050610c388184610f8c565b9150505b9392505050565b6000610c8583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fa2565b905092915050565b6000610c9883610ffd565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401610cd09190611beb565b60206040518083038186803b158015610ce857600080fd5b505afa158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d209190810190611728565b905092915050565b6000610d36838360016110a3565b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd8578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610dba57600080fd5b505af1158015610dce573d6000803e3d6000fd5b5050505050610eb0565b610de28282610525565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401610e1d9190611beb565b602060405180830381600087803b158015610e3757600080fd5b505af1158015610e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6f9190810190611728565b14610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690611bab565b60405180910390fd5b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b8152600401610ef09190611beb565b602060405180830381600087803b158015610f0a57600080fd5b505af1158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f429190810190611728565b905060008114610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90611b8b565b60405180910390fd5b505050565b6000610f9a83836001611147565b905092915050565b6000838311158290610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19190611b69565b60405180910390fd5b5060008385039050809150509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161104c9190611aa2565b60206040518083038186803b15801561106457600080fd5b505afa158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061109c9190810190611607565b9050919050565b60006110ae84610ffd565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b81526004016110ec929190611c06565b6020604051808303818588803b15801561110557600080fd5b505af1158015611119573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525061113e9190810190611728565b90509392505050565b60008061115385610ffd565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401611190929190611b09565b602060405180830381600087803b1580156111aa57600080fd5b505af11580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111e2919081019061166c565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b815260040161122393929190611c2f565b602060405180830381600087803b15801561123d57600080fd5b505af1158015611251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112759190810190611728565b9150509392505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b6000813590506112e281611e25565b92915050565b6000815190506112f781611e25565b92915050565b60008135905061130c81611e3c565b92915050565b600082601f83011261132357600080fd5b813561133661133182611c93565b611c66565b9150818183526020840193506020810190508385604084028201111561135b57600080fd5b60005b8381101561138b578161137188826114a1565b84526020840193506040830192505060018101905061135e565b5050505092915050565b600082601f8301126113a657600080fd5b81356113b96113b482611cbb565b611c66565b915081818352602084019350602081019050838560408402820111156113de57600080fd5b60005b8381101561140e57816113f488826114ed565b8452602084019350604083019250506001810190506113e1565b5050505092915050565b60008151905061142781611e53565b92915050565b60008151905061143c81611e6a565b92915050565b60008083601f84011261145457600080fd5b8235905067ffffffffffffffff81111561146d57600080fd5b60208301915083600182028301111561148557600080fd5b9250929050565b60008151905061149b81611e81565b92915050565b6000604082840312156114b357600080fd5b6114bd6040611c66565b905060006114cd848285016112d3565b60008301525060206114e1848285016115dd565b60208301525092915050565b6000604082840312156114ff57600080fd5b6115096040611c66565b90506000611519848285016112d3565b600083015250602061152d848285016115dd565b60208301525092915050565b60006080828403121561154b57600080fd5b6115556080611c66565b90506000611565848285016112fd565b6000830152506020611579848285016112d3565b602083015250604082013567ffffffffffffffff81111561159957600080fd5b6115a584828501611395565b604083015250606082013567ffffffffffffffff8111156115c557600080fd5b6115d184828501611312565b60608301525092915050565b6000813590506115ec81611e98565b92915050565b60008151905061160181611e98565b92915050565b60006020828403121561161957600080fd5b6000611627848285016112e8565b91505092915050565b6000806040838503121561164357600080fd5b6000611651858286016112d3565b9250506020611662858286016115dd565b9150509250929050565b60006020828403121561167e57600080fd5b600061168c84828501611418565b91505092915050565b6000602082840312156116a757600080fd5b60006116b58482850161142d565b91505092915050565b6000602082840312156116d057600080fd5b60006116de8482850161148c565b91505092915050565b6000602082840312156116f957600080fd5b600082013567ffffffffffffffff81111561171357600080fd5b61171f84828501611539565b91505092915050565b60006020828403121561173a57600080fd5b6000611748848285016115f2565b91505092915050565b60008060008060008060a0878903121561176a57600080fd5b600061177889828a016115dd565b965050602061178989828a016112d3565b955050604061179a89828a016112fd565b94505060606117ab89828a016112d3565b935050608087013567ffffffffffffffff8111156117c857600080fd5b6117d489828a01611442565b92509250509295509295509295565b6000806000806000608086880312156117fb57600080fd5b6000611809888289016115dd565b955050602061181a888289016115dd565b945050604061182b888289016115dd565b935050606086013567ffffffffffffffff81111561184857600080fd5b61185488828901611442565b92509250509295509295909350565b61186c81611d9c565b82525050565b61187b81611d26565b82525050565b61188a81611d56565b82525050565b600061189c8385611d0a565b93506118a9838584611dd2565b82840190509392505050565b60006118c082611ce3565b6118ca8185611cf9565b93506118da818560208601611de1565b6118e381611e14565b840191505092915050565b60006118f982611ce3565b6119038185611d0a565b9350611913818560208601611de1565b80840191505092915050565b600061192a82611cee565b6119348185611d15565b9350611944818560208601611de1565b61194d81611e14565b840191505092915050565b6000611965602983611d15565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b60006119cb601d83611d15565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000611a0b600083611d0a565b9150600082019050919050565b6000611a25602083611d15565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b611a6181611d92565b82525050565b6000611a7382866118ee565b9150611a80828486611890565b9150819050949350505050565b6000611a98826119fe565b9150819050919050565b6000602082019050611ab76000830184611872565b92915050565b6000608082019050611ad26000830187611863565b611adf6020830186611872565b611aec6040830185611a58565b8181036060830152611afe81846118b5565b905095945050505050565b6000604082019050611b1e6000830185611872565b611b2b6020830184611a58565b9392505050565b6000606082019050611b476000830186611881565b611b546020830185611881565b611b616040830184611881565b949350505050565b60006020820190508181036000830152611b83818461191f565b905092915050565b60006020820190508181036000830152611ba481611958565b9050919050565b60006020820190508181036000830152611bc4816119be565b9050919050565b60006020820190508181036000830152611be481611a18565b9050919050565b6000602082019050611c006000830184611a58565b92915050565b6000604082019050611c1b6000830185611a58565b611c286020830184611a58565b9392505050565b6000606082019050611c446000830186611a58565b611c516020830185611a58565b611c5e6040830184611a58565b949350505050565b6000604051905081810181811067ffffffffffffffff82111715611c8957600080fd5b8060405250919050565b600067ffffffffffffffff821115611caa57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115611cd257600080fd5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611d3182611d72565b9050919050565b6000611d4382611d72565b9050919050565b60008115159050919050565b6000819050919050565b6000611d6b82611d26565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611da782611dae565b9050919050565b6000611db982611dc0565b9050919050565b6000611dcb82611d72565b9050919050565b82818337600083830152505050565b60005b83811015611dff578082015181840152602081019050611de4565b83811115611e0e576000848401525b50505050565b6000601f19601f8301169050919050565b611e2e81611d26565b8114611e3957600080fd5b50565b611e4581611d38565b8114611e5057600080fd5b50565b611e5c81611d4a565b8114611e6757600080fd5b50565b611e7381611d56565b8114611e7e57600080fd5b50565b611e8a81611d60565b8114611e9557600080fd5b50565b611ea181611d92565b8114611eac57600080fd5b5056fea365627a7a72315820d4535111e47e76ba1c1532944b21bea901b6f14e2064c60a2463ff786e419f396c6578706572696d656e74616cf564736f6c63430005100040", + "sourceMap": "690:6189:26:-;;;810:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;810:23:26;690:6189;;;;;;", + "deployedSourceMap": "690:6189:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5563:1314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5563:1314:26;;;;;;;;;;;;;;;;:::i;:::-;;4250:1307;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4250:1307:26;;;;;;;;;;;;;;;;:::i;:::-;;1825:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1825:321:26;;;;;;;;;;;;;;;;:::i;:::-;;5563:1314;5824:31;5887:22;5824:95;;5984:53;6094:23;6083:35;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6083:35:26;;;6132:30;;6040:132;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6040:132:26;;;5984:188;;6183:24;6283:15;:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6283:55:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6283:55:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6283:55:26;;;;;;;;;6236:148;;;:150;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6236:150:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6236:150:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6236:150:26;;;;;;;;;6183:213;;6452:56;6470:15;6495:11;6452:17;:56::i;:::-;6566:11;:21;;;6601:15;6630;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6630:32:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6630:32:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6630:32:26;;;;;;;;;6676:18;6708:40;6566:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6566:192:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6566:192:26;;;;6814:56;6832:15;6857:11;6814:17;:56::i;:::-;5563:1314;;;;;;;;;:::o;4250:1307::-;4451:38;;:::i;:::-;4516:7;;4492:77;;;;;;;;;4451:118;;4580:31;4643:10;:33;;;4580:106;;4696:21;4720:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4720:31:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4720:31:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4720:31:26;;;;;;;;;4696:55;;4813:9;4825:1;4813:13;;4808:237;4832:10;:21;;;:28;4828:1;:32;4808:237;;;4881:153;4909:13;4940:10;:21;;;4962:1;4940:24;;;;;;;;;;;;;;:31;;;4989:10;:21;;;5011:1;4989:24;;;;;;;;;;;;;;:31;;;4881:10;:153::i;:::-;4862:3;;;;;;;4808:237;;;;5055:22;5092:9;5104:1;5092:13;;5087:282;5111:10;:27;;;:34;5107:1;:38;5087:282;;;5184:174;5221:13;5252:10;:27;;;5280:1;5252:30;;;;;;;;;;;;;;:37;;;5307:10;:27;;;5335:1;5307:30;;;;;;;;;;;;;;:37;;;5184:19;:174::i;:::-;5166:192;;;;5147:3;;;;;;;5087:282;;;;5430:10;:26;;;:31;;5481:55;5523:12;5481:37;5513:4;5481:27;5500:7;5481:14;:18;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;:41;;:55;;;;:::i;:::-;5430:120;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;5430:120:26;;4250:1307;;;;;;;;;:::o;1825:321::-;1951:18;1980:6;1972:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1972:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1972:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1972:28:26;;;;;;;;;1951:49;;2077:4;2031:50;;2038:10;2031:26;;;2058:6;2066;2031:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:42:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2031:42:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2031:42:26;;;;;;;;;:50;;;2010:129;;;;;;;;;;;;;;;;;;;;;;1825:321;;;:::o;1203:305::-;1304:9;1333:12;1324:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1324:34:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1324:34:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1324:34:26;;;;;;;;;1304:55;;1378:1;1370:17;;;1425:3;1409:21;;1401:30;;;1453:1;1445:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1445:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1445:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1445:16:26;;;;;;;;;1483:1;1475:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1475:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1475:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1475:16:26;;;;;;;;;1370:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1370:131:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1370:131:26;;;;1203:305;;;:::o;1514:::-;1615:9;1644:12;1635:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1635:34:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1635:34:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1635:34:26;;;;;;;;;1615:55;;1689:1;1681:17;;;1736:3;1720:21;;1712:30;;;1764:1;1756:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1756:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1756:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1756:16:26;;;;;;;;;1794:1;1786:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1786:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1786:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1786:16:26;;;;;;;;;1681:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1681:131:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1681:131:26;;;;1514:305;;;:::o;3307:530::-;3485:13;3475:23;;:6;:23;;;3471:306;;3514:18;3543:6;3535:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3535:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3535:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3535:28:26;;;;;;;;;3514:49;;3621:17;3641:40;3662:10;3674:6;3641:20;:40::i;:::-;3621:60;;3732:34;3744:10;3756:9;3732:11;:34::i;:::-;;3471:306;;;3787:43;3800:13;3815:6;3823;3787:12;:43::i;:::-;3307:530;;;:::o;3843:401::-;3975:7;4019:33;4037:6;4045;4019:17;:33::i;:::-;4077:13;4067:23;;:6;:23;;;4063:67;;;4113:6;4106:13;;;;4063:67;4140:18;4169:6;4161:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4161:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4161:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4161:28:26;;;;;;;;;4140:49;;4206:31;4218:10;4230:6;4206:11;:31::i;:::-;4199:38;;;3843:401;;;;;;:::o;1274:134:32:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;2525:212:24:-;2618:4;2658:33;2678:12;2658:19;:33::i;:::-;2641:76;;;2718:11;2641:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2641:89:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2641:89:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2641:89:24;;;;;;;;;2634:96;;2525:212;;;;:::o;514:160::-;599:4;622:45;634:12;648:9;664:1;622:11;:45::i;:::-;615:52;;514:160;;;;:::o;2637:408:26:-;2759:13;2749:23;;:6;:23;;;2745:294;;;2796:6;2788:27;;;2822:6;2788:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2788:43:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2788:43:26;;;;;2745:294;;;2862:24;2871:6;2879;2862:8;:24::i;:::-;2964:1;2933:6;2925:27;;;2953:6;2925:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2925:35:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2925:35:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2925:35:26;;;;;;;;;:40;2900:128;;;;;;;;;;;;;;;;;;;;;;2745:294;2637:408;;;:::o;3051:250::-;3135:6;3152;3144:32;;;3177:12;3144:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3144:46:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3144:46:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3144:46:26;;;;;;;;;3135:55;;3226:1;3221;:6;3200:94;;;;;;;;;;;;;;;;;;;;;;3051:250;;;:::o;955:156:24:-;1034:4;1057:47;1069:12;1083:11;1101:1;1057:11;:47::i;:::-;1050:54;;955:156;;;;:::o;1732:187:32:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;337:171:24:-;411:7;288:42;437:50;;;488:12;437:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;437:64:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;437:64:24;;;;;;;;;430:71;;337:171;;;:::o;680:269::-;786:4;826:33;846:12;826:19;:33::i;:::-;809:84;;;900:9;911:14;938:2;932:3;:8;809:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;809:133:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;809:133:24;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;809:133:24;;;;;;;;;802:140;;680:269;;;;;:::o;1117:355::-;1215:4;1231:16;1250:33;1270:12;1250:19;:33::i;:::-;1231:52;;1301:12;1294:28;;;1323:8;1333:11;1294:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1294:51:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1294:51:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1294:51:24;;;;;;;;;;1380:8;1363:59;;;1423:11;1436:12;1461:2;1455:3;:8;1363:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1363:102:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1363:102:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1363:102:24;;;;;;;;;1356:109;;;1117:355;;;;;:::o;690:6189:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:146;;371:6;358:20;349:29;;383:41;418:5;383:41;;;343:86;;;;;487:789;;630:3;623:4;615:6;611:17;607:27;597:2;;648:1;645;638:12;597:2;685:6;672:20;707:106;722:90;805:6;722:90;;;707:106;;;698:115;;830:5;855:6;848:5;841:21;885:4;877:6;873:17;863:27;;907:4;902:3;898:14;891:21;;960:6;1007:3;999:4;991:6;987:17;982:3;978:27;975:36;972:2;;;1024:1;1021;1014:12;972:2;1049:1;1034:236;1059:6;1056:1;1053:13;1034:236;;;1117:3;1139:67;1202:3;1190:10;1139:67;;;1134:3;1127:80;1230:4;1225:3;1221:14;1214:21;;1258:4;1253:3;1249:14;1242:21;;1091:179;1081:1;1078;1074:9;1069:14;;1034:236;;;1038:14;590:686;;;;;;;;1329:771;;1466:3;1459:4;1451:6;1447:17;1443:27;1433:2;;1484:1;1481;1474:12;1433:2;1521:6;1508:20;1543:100;1558:84;1635:6;1558:84;;;1543:100;;;1534:109;;1660:5;1685:6;1678:5;1671:21;1715:4;1707:6;1703:17;1693:27;;1737:4;1732:3;1728:14;1721:21;;1790:6;1837:3;1829:4;1821:6;1817:17;1812:3;1808:27;1805:36;1802:2;;;1854:1;1851;1844:12;1802:2;1879:1;1864:230;1889:6;1886:1;1883:13;1864:230;;;1947:3;1969:61;2026:3;2014:10;1969:61;;;1964:3;1957:74;2054:4;2049:3;2045:14;2038:21;;2082:4;2077:3;2073:14;2066:21;;1921:173;1911:1;1908;1904:9;1899:14;;1864:230;;;1868:14;1426:674;;;;;;;;2108:128;;2189:6;2183:13;2174:22;;2201:30;2225:5;2201:30;;;2168:68;;;;;2243:134;;2327:6;2321:13;2312:22;;2339:33;2366:5;2339:33;;;2306:71;;;;;2398:336;;;2512:3;2505:4;2497:6;2493:17;2489:27;2479:2;;2530:1;2527;2520:12;2479:2;2563:6;2550:20;2540:30;;2590:18;2582:6;2579:30;2576:2;;;2622:1;2619;2612:12;2576:2;2656:4;2648:6;2644:17;2632:29;;2707:3;2699:4;2691:6;2687:17;2677:8;2673:32;2670:41;2667:2;;;2724:1;2721;2714:12;2667:2;2472:262;;;;;;2742:174;;2846:6;2840:13;2831:22;;2858:53;2905:5;2858:53;;;2825:91;;;;;2970:476;;3089:4;3077:9;3072:3;3068:19;3064:30;3061:2;;;3107:1;3104;3097:12;3061:2;3125:20;3140:4;3125:20;;;3116:29;;3197:1;3229:49;3274:3;3265:6;3254:9;3250:22;3229:49;;;3222:4;3215:5;3211:16;3204:75;3155:135;3342:2;3375:49;3420:3;3411:6;3400:9;3396:22;3375:49;;;3368:4;3361:5;3357:16;3350:75;3300:136;3055:391;;;;;3494:470;;3607:4;3595:9;3590:3;3586:19;3582:30;3579:2;;;3625:1;3622;3615:12;3579:2;3643:20;3658:4;3643:20;;;3634:29;;3715:1;3747:49;3792:3;3783:6;3772:9;3768:22;3747:49;;;3740:4;3733:5;3729:16;3722:75;3673:135;3860:2;3893:49;3938:3;3929:6;3918:9;3914:22;3893:49;;;3886:4;3879:5;3875:16;3868:75;3818:136;3573:391;;;;;4022:1087;;4145:4;4133:9;4128:3;4124:19;4120:30;4117:2;;;4163:1;4160;4153:12;4117:2;4181:20;4196:4;4181:20;;;4172:29;;4262:1;4294:57;4347:3;4338:6;4327:9;4323:22;4294:57;;;4287:4;4280:5;4276:16;4269:83;4211:152;4431:2;4464:49;4509:3;4500:6;4489:9;4485:22;4464:49;;;4457:4;4450:5;4446:16;4439:75;4373:152;4609:2;4598:9;4594:18;4581:32;4633:18;4625:6;4622:30;4619:2;;;4665:1;4662;4655:12;4619:2;4700:94;4790:3;4781:6;4770:9;4766:22;4700:94;;;4693:4;4686:5;4682:16;4675:120;4535:271;4896:2;4885:9;4881:18;4868:32;4920:18;4912:6;4909:30;4906:2;;;4952:1;4949;4942:12;4906:2;4987:100;5083:3;5074:6;5063:9;5059:22;4987:100;;;4980:4;4973:5;4969:16;4962:126;4816:283;4111:998;;;;;5116:130;;5196:6;5183:20;5174:29;;5208:33;5235:5;5208:33;;;5168:78;;;;;5253:134;;5337:6;5331:13;5322:22;;5349:33;5376:5;5349:33;;;5316:71;;;;;5394:263;;5509:2;5497:9;5488:7;5484:23;5480:32;5477:2;;;5525:1;5522;5515:12;5477:2;5560:1;5577:64;5633:7;5624:6;5613:9;5609:22;5577:64;;;5567:74;;5539:108;5471:186;;;;;5664:366;;;5785:2;5773:9;5764:7;5760:23;5756:32;5753:2;;;5801:1;5798;5791:12;5753:2;5836:1;5853:53;5898:7;5889:6;5878:9;5874:22;5853:53;;;5843:63;;5815:97;5943:2;5961:53;6006:7;5997:6;5986:9;5982:22;5961:53;;;5951:63;;5922:98;5747:283;;;;;;6037:257;;6149:2;6137:9;6128:7;6124:23;6120:32;6117:2;;;6165:1;6162;6155:12;6117:2;6200:1;6217:61;6270:7;6261:6;6250:9;6246:22;6217:61;;;6207:71;;6179:105;6111:183;;;;;6301:263;;6416:2;6404:9;6395:7;6391:23;6387:32;6384:2;;;6432:1;6429;6422:12;6384:2;6467:1;6484:64;6540:7;6531:6;6520:9;6516:22;6484:64;;;6474:74;;6446:108;6378:186;;;;;6571:303;;6706:2;6694:9;6685:7;6681:23;6677:32;6674:2;;;6722:1;6719;6712:12;6674:2;6757:1;6774:84;6850:7;6841:6;6830:9;6826:22;6774:84;;;6764:94;;6736:128;6668:206;;;;;6881:395;;7019:2;7007:9;6998:7;6994:23;6990:32;6987:2;;;7035:1;7032;7025:12;6987:2;7098:1;7087:9;7083:17;7070:31;7121:18;7113:6;7110:30;7107:2;;;7153:1;7150;7143:12;7107:2;7173:87;7252:7;7243:6;7232:9;7228:22;7173:87;;;7163:97;;7049:217;6981:295;;;;;7283:263;;7398:2;7386:9;7377:7;7373:23;7369:32;7366:2;;;7414:1;7411;7404:12;7366:2;7449:1;7466:64;7522:7;7513:6;7502:9;7498:22;7466:64;;;7456:74;;7428:108;7360:186;;;;;7553:883;;;;;;;7752:3;7740:9;7731:7;7727:23;7723:33;7720:2;;;7769:1;7766;7759:12;7720:2;7804:1;7821:53;7866:7;7857:6;7846:9;7842:22;7821:53;;;7811:63;;7783:97;7911:2;7929:53;7974:7;7965:6;7954:9;7950:22;7929:53;;;7919:63;;7890:98;8019:2;8037:61;8090:7;8081:6;8070:9;8066:22;8037:61;;;8027:71;;7998:106;8135:2;8153:53;8198:7;8189:6;8178:9;8174:22;8153:53;;;8143:63;;8114:98;8271:3;8260:9;8256:19;8243:33;8296:18;8288:6;8285:30;8282:2;;;8328:1;8325;8318:12;8282:2;8356:64;8412:7;8403:6;8392:9;8388:22;8356:64;;;8346:74;;;;8222:204;7714:722;;;;;;;;;8443:741;;;;;;8617:3;8605:9;8596:7;8592:23;8588:33;8585:2;;;8634:1;8631;8624:12;8585:2;8669:1;8686:53;8731:7;8722:6;8711:9;8707:22;8686:53;;;8676:63;;8648:97;8776:2;8794:53;8839:7;8830:6;8819:9;8815:22;8794:53;;;8784:63;;8755:98;8884:2;8902:53;8947:7;8938:6;8927:9;8923:22;8902:53;;;8892:63;;8863:98;9020:2;9009:9;9005:18;8992:32;9044:18;9036:6;9033:30;9030:2;;;9076:1;9073;9066:12;9030:2;9104:64;9160:7;9151:6;9140:9;9136:22;9104:64;;;9094:74;;;;8971:203;8579:605;;;;;;;;;9191:142;9282:45;9321:5;9282:45;;;9277:3;9270:58;9264:69;;;9340:113;9423:24;9441:5;9423:24;;;9418:3;9411:37;9405:48;;;9460:113;9543:24;9561:5;9543:24;;;9538:3;9531:37;9525:48;;;9603:310;;9735:88;9816:6;9811:3;9735:88;;;9728:95;;9835:43;9871:6;9866:3;9859:5;9835:43;;;9900:6;9895:3;9891:16;9884:23;;9721:192;;;;;;9921:343;;10031:38;10063:5;10031:38;;;10081:70;10144:6;10139:3;10081:70;;;10074:77;;10156:52;10201:6;10196:3;10189:4;10182:5;10178:16;10156:52;;;10229:29;10251:6;10229:29;;;10224:3;10220:39;10213:46;;10011:253;;;;;;10271:356;;10399:38;10431:5;10399:38;;;10449:88;10530:6;10525:3;10449:88;;;10442:95;;10542:52;10587:6;10582:3;10575:4;10568:5;10564:16;10542:52;;;10615:6;10610:3;10606:16;10599:23;;10379:248;;;;;;10634:347;;10746:39;10779:5;10746:39;;;10797:71;10861:6;10856:3;10797:71;;;10790:78;;10873:52;10918:6;10913:3;10906:4;10899:5;10895:16;10873:52;;;10946:29;10968:6;10946:29;;;10941:3;10937:39;10930:46;;10726:255;;;;;;10989:378;;11149:67;11213:2;11208:3;11149:67;;;11142:74;;11249:34;11245:1;11240:3;11236:11;11229:55;11318:11;11313:2;11308:3;11304:12;11297:33;11358:2;11353:3;11349:12;11342:19;;11135:232;;;;11376:329;;11536:67;11600:2;11595:3;11536:67;;;11529:74;;11636:31;11632:1;11627:3;11623:11;11616:52;11696:2;11691:3;11687:12;11680:19;;11522:183;;;;11714:296;;11891:83;11972:1;11967:3;11891:83;;;11884:90;;12002:1;11997:3;11993:11;11986:18;;11877:133;;;;12019:332;;12179:67;12243:2;12238:3;12179:67;;;12172:74;;12279:34;12275:1;12270:3;12266:11;12259:55;12342:2;12337:3;12333:12;12326:19;;12165:186;;;;12359:113;12442:24;12460:5;12442:24;;;12437:3;12430:37;12424:48;;;12479:439;;12679:93;12768:3;12759:6;12679:93;;;12672:100;;12790:103;12889:3;12880:6;12872;12790:103;;;12783:110;;12910:3;12903:10;;12660:258;;;;;;;12925:370;;13123:147;13266:3;13123:147;;;13116:154;;13287:3;13280:10;;13104:191;;;;13302:213;;13420:2;13409:9;13405:18;13397:26;;13434:71;13502:1;13491:9;13487:17;13478:6;13434:71;;;13391:124;;;;;13522:647;;13750:3;13739:9;13735:19;13727:27;;13765:79;13841:1;13830:9;13826:17;13817:6;13765:79;;;13855:72;13923:2;13912:9;13908:18;13899:6;13855:72;;;13938;14006:2;13995:9;13991:18;13982:6;13938:72;;;14058:9;14052:4;14048:20;14043:2;14032:9;14028:18;14021:48;14083:76;14154:4;14145:6;14083:76;;;14075:84;;13721:448;;;;;;;;14176:324;;14322:2;14311:9;14307:18;14299:26;;14336:71;14404:1;14393:9;14389:17;14380:6;14336:71;;;14418:72;14486:2;14475:9;14471:18;14462:6;14418:72;;;14293:207;;;;;;14507:435;;14681:2;14670:9;14666:18;14658:26;;14695:71;14763:1;14752:9;14748:17;14739:6;14695:71;;;14777:72;14845:2;14834:9;14830:18;14821:6;14777:72;;;14860;14928:2;14917:9;14913:18;14904:6;14860:72;;;14652:290;;;;;;;14949:301;;15087:2;15076:9;15072:18;15064:26;;15137:9;15131:4;15127:20;15123:1;15112:9;15108:17;15101:47;15162:78;15235:4;15226:6;15162:78;;;15154:86;;15058:192;;;;;15257:407;;15448:2;15437:9;15433:18;15425:26;;15498:9;15492:4;15488:20;15484:1;15473:9;15469:17;15462:47;15523:131;15649:4;15523:131;;;15515:139;;15419:245;;;;15671:407;;15862:2;15851:9;15847:18;15839:26;;15912:9;15906:4;15902:20;15898:1;15887:9;15883:17;15876:47;15937:131;16063:4;15937:131;;;15929:139;;15833:245;;;;16085:407;;16276:2;16265:9;16261:18;16253:26;;16326:9;16320:4;16316:20;16312:1;16301:9;16297:17;16290:47;16351:131;16477:4;16351:131;;;16343:139;;16247:245;;;;16499:213;;16617:2;16606:9;16602:18;16594:26;;16631:71;16699:1;16688:9;16684:17;16675:6;16631:71;;;16588:124;;;;;16719:324;;16865:2;16854:9;16850:18;16842:26;;16879:71;16947:1;16936:9;16932:17;16923:6;16879:71;;;16961:72;17029:2;17018:9;17014:18;17005:6;16961:72;;;16836:207;;;;;;17050:435;;17224:2;17213:9;17209:18;17201:26;;17238:71;17306:1;17295:9;17291:17;17282:6;17238:71;;;17320:72;17388:2;17377:9;17373:18;17364:6;17320:72;;;17403;17471:2;17460:9;17456:18;17447:6;17403:72;;;17195:290;;;;;;;17492:256;;17554:2;17548:9;17538:19;;17592:4;17584:6;17580:17;17691:6;17679:10;17676:22;17655:18;17643:10;17640:34;17637:62;17634:2;;;17712:1;17709;17702:12;17634:2;17732:10;17728:2;17721:22;17532:216;;;;;17755:330;;17940:18;17932:6;17929:30;17926:2;;;17972:1;17969;17962:12;17926:2;18007:4;17999:6;17995:17;17987:25;;18070:4;18064;18060:15;18052:23;;17863:222;;;;18092:324;;18271:18;18263:6;18260:30;18257:2;;;18303:1;18300;18293:12;18257:2;18338:4;18330:6;18326:17;18318:25;;18401:4;18395;18391:15;18383:23;;18194:222;;;;18423:121;;18516:5;18510:12;18500:22;;18481:63;;;;18551:122;;18645:5;18639:12;18629:22;;18610:63;;;;18681:162;;18795:6;18790:3;18783:19;18832:4;18827:3;18823:14;18808:29;;18776:67;;;;;18852:144;;18987:3;18972:18;;18965:31;;;;;19005:163;;19120:6;19115:3;19108:19;19157:4;19152:3;19148:14;19133:29;;19101:67;;;;;19176:91;;19238:24;19256:5;19238:24;;;19227:35;;19221:46;;;;19274:99;;19344:24;19362:5;19344:24;;;19333:35;;19327:46;;;;19380:85;;19453:5;19446:13;19439:21;19428:32;;19422:43;;;;19472:72;;19534:5;19523:16;;19517:27;;;;19551:111;;19633:24;19651:5;19633:24;;;19622:35;;19616:46;;;;19669:121;;19742:42;19735:5;19731:54;19720:65;;19714:76;;;;19797:72;;19859:5;19848:16;;19842:27;;;;19876:129;;19963:37;19994:5;19963:37;;;19950:50;;19944:61;;;;20012:121;;20091:37;20122:5;20091:37;;;20078:50;;20072:61;;;;20140:108;;20219:24;20237:5;20219:24;;;20206:37;;20200:48;;;;20256:145;20337:6;20332:3;20327;20314:30;20393:1;20384:6;20379:3;20375:16;20368:27;20307:94;;;;20410:268;20475:1;20482:101;20496:6;20493:1;20490:13;20482:101;;;20572:1;20567:3;20563:11;20557:18;20553:1;20548:3;20544:11;20537:39;20518:2;20515:1;20511:10;20506:15;;20482:101;;;20598:6;20595:1;20592:13;20589:2;;;20663:1;20654:6;20649:3;20645:16;20638:27;20589:2;20459:219;;;;;20686:97;;20774:2;20770:7;20765:2;20758:5;20754:14;20750:28;20740:38;;20734:49;;;;20791:117;20860:24;20878:5;20860:24;;;20853:5;20850:35;20840:2;;20899:1;20896;20889:12;20840:2;20834:74;;20915:133;20992:32;21018:5;20992:32;;;20985:5;20982:43;20972:2;;21039:1;21036;21029:12;20972:2;20966:82;;21055:111;21121:21;21136:5;21121:21;;;21114:5;21111:32;21101:2;;21157:1;21154;21147:12;21101:2;21095:71;;21173:117;21242:24;21260:5;21242:24;;;21235:5;21232:35;21222:2;;21281:1;21278;21271:12;21222:2;21216:74;;21297:157;21386:44;21424:5;21386:44;;;21379:5;21376:55;21366:2;;21445:1;21442;21435:12;21366:2;21360:94;;21461:117;21530:24;21548:5;21530:24;;;21523:5;21520:35;21510:2;;21569:1;21566;21559:12;21510:2;21504:74;", + "source": "/*\n A manager to exit all positions (collateral and debt)\n*/\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\nimport \"../interfaces/IERC20.sol\";\n\nimport \"../interfaces/compound/IComptroller.sol\";\nimport \"../interfaces/compound/ICEther.sol\";\nimport \"../interfaces/compound/ICToken.sol\";\n\nimport \"../interfaces/aave/ILendingPoolAddressesProvider.sol\";\nimport \"../interfaces/aave/ILendingPool.sol\";\nimport \"../interfaces/aave/ILendingPoolParametersProvider.sol\";\n\nimport \"../lib/uniswap/UniswapLiteBase.sol\";\nimport \"../lib/dapphub/Guard.sol\";\n\nimport \"../registries/AddressRegistry.sol\";\n\nimport \"../proxies/DACProxy.sol\";\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\n\n\ncontract DedgeExitManager is UniswapLiteBase {\n using SafeMath for uint256;\n\n function() external payable {}\n\n constructor() public {}\n\n struct DebtMarket {\n address cToken;\n uint256 amount;\n }\n\n struct CollateralMarket {\n address cToken;\n uint256 amount;\n }\n\n struct ExitPositionCalldata {\n address payable exitUserAddress;\n address addressRegistryAddress;\n DebtMarket[] debtMarket;\n CollateralMarket[] collateralMarket;\n }\n\n function _proxyGuardPermit(address payable proxyAddress, address src)\n internal\n {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).permit(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _proxyGuardForbid(address payable proxyAddress, address src)\n internal\n {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).forbid(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _approve(address cToken, uint256 amount) public {\n // Approves CToken contract to call `transferFrom`\n address underlying = ICToken(cToken).underlying();\n require(\n IERC20(underlying).approve(cToken, amount) == true,\n \"cmpnd-mgr-ctoken-approved-failed\"\n );\n }\n\n function _transfer(\n address CEtherAddress,\n address cToken,\n address recipient,\n uint256 amount\n ) internal {\n if (cToken == CEtherAddress) {\n recipient.call.value(amount)(\"\");\n } else {\n require(\n IERC20(ICToken(cToken).underlying()).transfer(\n recipient,\n amount\n ),\n \"cmpnd-mgr-transfer-failed\"\n );\n }\n }\n\n function _repayBorrow(address CEtherAddress, address cToken, uint256 amount)\n internal\n {\n if (cToken == CEtherAddress) {\n ICEther(cToken).repayBorrow.value(amount)();\n } else {\n _approve(cToken, amount);\n require(\n ICToken(cToken).repayBorrow(amount) == 0,\n \"cmpnd-mgr-ctoken-repay-failed\"\n );\n }\n }\n\n function _redeemUnderlying(address cToken, uint256 redeemTokens) internal {\n uint a = ICToken(cToken).redeemUnderlying(redeemTokens);\n require(\n a == 0,\n \"cmpnd-mgr-ctoken-redeem-underlying-failed\"\n );\n }\n\n function _repayDebt(address CEtherAddress, address cToken, uint256 amount)\n internal\n {\n // Always assume we have enough ETH to repay debt\n if (cToken != CEtherAddress) {\n address underlying = ICToken(cToken).underlying();\n\n // Get ETH needed to get ERC20\n uint256 ethAmount = _getEthToTokenOutput(underlying, amount);\n\n // Convert ETH to token\n _ethToToken(underlying, ethAmount);\n }\n\n _repayBorrow(CEtherAddress, cToken, amount);\n }\n\n function _retrieveCollateral(\n address CEtherAddress,\n address cToken,\n uint256 amount\n ) internal returns (uint256) {\n // Redeems token\n _redeemUnderlying(cToken, amount);\n\n if (cToken == CEtherAddress) {\n return amount;\n }\n\n address underlying = ICToken(cToken).underlying();\n return _tokenToEth(underlying, amount);\n }\n\n function exitPositionsPostLoan(\n uint256 _amount,\n uint256 _fee,\n uint256 _protocolFee,\n bytes calldata _params\n ) external {\n // We should now have funds\n ExitPositionCalldata memory epCalldata = abi.decode(\n _params,\n (ExitPositionCalldata)\n );\n\n AddressRegistry addressRegistry = AddressRegistry(\n epCalldata.addressRegistryAddress\n );\n address CEtherAddress = addressRegistry.CEtherAddress();\n\n // Repay debt and retrieve collateral\n for (uint256 i = 0; i < epCalldata.debtMarket.length; i++) {\n _repayDebt(\n CEtherAddress,\n epCalldata.debtMarket[i].cToken,\n epCalldata.debtMarket[i].amount\n );\n }\n\n uint256 totalEthAmount;\n for (uint256 i = 0; i < epCalldata.collateralMarket.length; i++) {\n totalEthAmount += _retrieveCollateral(\n CEtherAddress,\n epCalldata.collateralMarket[i].cToken,\n epCalldata.collateralMarket[i].amount\n );\n }\n\n // Repays (ETH - fees) back to exitAddress\n epCalldata.exitUserAddress.call.value(\n totalEthAmount.sub(_amount).sub(_fee).sub(_protocolFee)\n )(\"\");\n }\n\n function exitPositions(\n uint256 totalEthDebtAmount,\n address dedgeExitManagerAddress,\n address payable dacProxyAddress,\n address addressRegistryAddress,\n bytes calldata executeOperationCalldataParams\n ) external {\n AddressRegistry addressRegistry = AddressRegistry(\n addressRegistryAddress\n );\n\n // Injects target address into calldataParams\n bytes memory addressAndExecuteOperationCalldataParams = abi\n .encodePacked(\n abi.encode(dedgeExitManagerAddress),\n executeOperationCalldataParams\n );\n\n ILendingPool lendingPool = ILendingPool(\n ILendingPoolAddressesProvider(\n addressRegistry.AaveLendingPoolAddressProviderAddress()\n )\n .getLendingPool()\n );\n\n // Approve lendingPool to call proxy\n _proxyGuardPermit(dacProxyAddress, address(lendingPool));\n\n // 3. Flashloan ETH with relevant data\n lendingPool.flashLoan(\n dacProxyAddress,\n addressRegistry.AaveEthAddress(),\n totalEthDebtAmount,\n addressAndExecuteOperationCalldataParams\n );\n\n // Forbids lendingPool to call proxy\n _proxyGuardForbid(dacProxyAddress, address(lendingPool));\n }\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol", "ast": { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol", "exportedSymbols": { "DedgeExitManager": [ - 6539 + 6428 ] }, - "id": 6540, + "id": 6429, "nodeType": "SourceUnit", "nodes": [ { @@ -175,7 +139,7 @@ "file": "../interfaces/IERC20.sol", "id": 5900, "nodeType": "ImportDirective", - "scope": 6540, + "scope": 6429, "sourceUnit": 121, "src": "124:34:26", "symbolAliases": [], @@ -186,7 +150,7 @@ "file": "../interfaces/compound/IComptroller.sol", "id": 5901, "nodeType": "ImportDirective", - "scope": 6540, + "scope": 6429, "sourceUnit": 1097, "src": "160:49:26", "symbolAliases": [], @@ -197,7 +161,7 @@ "file": "../interfaces/compound/ICEther.sol", "id": 5902, "nodeType": "ImportDirective", - "scope": 6540, + "scope": 6429, "sourceUnit": 733, "src": "210:44:26", "symbolAliases": [], @@ -208,7 +172,7 @@ "file": "../interfaces/compound/ICToken.sol", "id": 5903, "nodeType": "ImportDirective", - "scope": 6540, + "scope": 6429, "sourceUnit": 859, "src": "255:44:26", "symbolAliases": [], @@ -219,7 +183,7 @@ "file": "../interfaces/aave/ILendingPoolAddressesProvider.sol", "id": 5904, "nodeType": "ImportDirective", - "scope": 6540, + "scope": 6429, "sourceUnit": 660, "src": "301:62:26", "symbolAliases": [], @@ -230,7 +194,7 @@ "file": "../interfaces/aave/ILendingPool.sol", "id": 5905, "nodeType": "ImportDirective", - "scope": 6540, + "scope": 6429, "sourceUnit": 547, "src": "364:45:26", "symbolAliases": [], @@ -241,7 +205,7 @@ "file": "../interfaces/aave/ILendingPoolParametersProvider.sol", "id": 5906, "nodeType": "ImportDirective", - "scope": 6540, + "scope": 6429, "sourceUnit": 670, "src": "410:63:26", "symbolAliases": [], @@ -252,7 +216,7 @@ "file": "../lib/uniswap/UniswapLiteBase.sol", "id": 5907, "nodeType": "ImportDirective", - "scope": 6540, + "scope": 6429, "sourceUnit": 5195, "src": "475:44:26", "symbolAliases": [], @@ -263,7 +227,7 @@ "file": "../lib/dapphub/Guard.sol", "id": 5908, "nodeType": "ImportDirective", - "scope": 6540, + "scope": 6429, "sourceUnit": 3196, "src": "520:34:26", "symbolAliases": [], @@ -274,8 +238,8 @@ "file": "../registries/AddressRegistry.sol", "id": 5909, "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 7629, + "scope": 6429, + "sourceUnit": 7551, "src": "556:43:26", "symbolAliases": [], "unitAlias": "" @@ -285,8 +249,8 @@ "file": "../proxies/DACProxy.sol", "id": 5910, "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 7323, + "scope": 6429, + "sourceUnit": 7245, "src": "601:33:26", "symbolAliases": [], "unitAlias": "" @@ -296,8 +260,8 @@ "file": "@openzeppelin/contracts/math/SafeMath.sol", "id": 5911, "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 7816, + "scope": 6429, + "sourceUnit": 7738, "src": "636:51:26", "symbolAliases": [], "unitAlias": "" @@ -329,9 +293,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 6539, + "id": 6428, "linearizedBaseContracts": [ - 6539, + 6428, 5194 ], "name": "DedgeExitManager", @@ -344,10 +308,10 @@ "id": 5914, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7815, + "referencedDeclaration": 7737, "src": "747:8:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$7815", + "typeIdentifier": "t_contract$_SafeMath_$7737", "typeString": "library SafeMath" } }, @@ -390,7 +354,7 @@ "parameters": [], "src": "802:0:26" }, - "scope": 6539, + "scope": 6428, "src": "774:30:26", "stateMutability": "payable", "superFunction": null, @@ -422,23 +386,151 @@ "parameters": [], "src": "831:0:26" }, - "scope": 6539, + "scope": 6428, "src": "810:23:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { - "canonicalName": "DedgeExitManager.ExitPositionCalldata", - "id": 5935, + "canonicalName": "DedgeExitManager.DebtMarket", + "id": 5929, "members": [ { "constant": false, "id": 5926, + "name": "cToken", + "nodeType": "VariableDeclaration", + "scope": 5929, + "src": "867:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5925, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "867:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5928, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5929, + "src": "891:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5927, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "891:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DebtMarket", + "nodeType": "StructDefinition", + "scope": 6428, + "src": "839:73:26", + "visibility": "public" + }, + { + "canonicalName": "DedgeExitManager.CollateralMarket", + "id": 5934, + "members": [ + { + "constant": false, + "id": 5931, + "name": "cToken", + "nodeType": "VariableDeclaration", + "scope": 5934, + "src": "952:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5930, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "952:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5933, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5934, + "src": "976:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5932, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "976:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "CollateralMarket", + "nodeType": "StructDefinition", + "scope": 6428, + "src": "918:79:26", + "visibility": "public" + }, + { + "canonicalName": "DedgeExitManager.ExitPositionCalldata", + "id": 5945, + "members": [ + { + "constant": false, + "id": 5936, "name": "exitUserAddress", "nodeType": "VariableDeclaration", - "scope": 5935, - "src": "877:31:26", + "scope": 5945, + "src": "1041:31:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -446,10 +538,10 @@ "typeString": "address payable" }, "typeName": { - "id": 5925, + "id": 5935, "name": "address", "nodeType": "ElementaryTypeName", - "src": "877:15:26", + "src": "1041:15:26", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -461,11 +553,11 @@ }, { "constant": false, - "id": 5928, + "id": 5938, "name": "addressRegistryAddress", "nodeType": "VariableDeclaration", - "scope": 5935, - "src": "918:30:26", + "scope": 5945, + "src": "1082:30:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -473,10 +565,10 @@ "typeString": "address" }, "typeName": { - "id": 5927, + "id": 5937, "name": "address", "nodeType": "ElementaryTypeName", - "src": "918:7:26", + "src": "1082:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -488,36 +580,37 @@ }, { "constant": false, - "id": 5931, - "name": "debtCTokens", + "id": 5941, + "name": "debtMarket", "nodeType": "VariableDeclaration", - "scope": 5935, - "src": "958:21:26", + "scope": 5945, + "src": "1122:23:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_storage_$dyn_storage_ptr", + "typeString": "struct DedgeExitManager.DebtMarket[]" }, "typeName": { "baseType": { - "id": 5929, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "958:7:26", - "stateMutability": "nonpayable", + "contractScope": null, + "id": 5939, + "name": "DebtMarket", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5929, + "src": "1122:10:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_struct$_DebtMarket_$5929_storage_ptr", + "typeString": "struct DedgeExitManager.DebtMarket" } }, - "id": 5930, + "id": 5940, "length": null, "nodeType": "ArrayTypeName", - "src": "958:9:26", + "src": "1122:12:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_storage_$dyn_storage_ptr", + "typeString": "struct DedgeExitManager.DebtMarket[]" } }, "value": null, @@ -525,36 +618,37 @@ }, { "constant": false, - "id": 5934, - "name": "collateralCTokens", + "id": 5944, + "name": "collateralMarket", "nodeType": "VariableDeclaration", - "scope": 5935, - "src": "989:27:26", + "scope": 5945, + "src": "1155:35:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_storage_$dyn_storage_ptr", + "typeString": "struct DedgeExitManager.CollateralMarket[]" }, "typeName": { "baseType": { - "id": 5932, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "989:7:26", - "stateMutability": "nonpayable", + "contractScope": null, + "id": 5942, + "name": "CollateralMarket", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5934, + "src": "1155:16:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_struct$_CollateralMarket_$5934_storage_ptr", + "typeString": "struct DedgeExitManager.CollateralMarket" } }, - "id": 5933, + "id": 5943, "length": null, "nodeType": "ArrayTypeName", - "src": "989:9:26", + "src": "1155:18:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_storage_$dyn_storage_ptr", + "typeString": "struct DedgeExitManager.CollateralMarket[]" } }, "value": null, @@ -563,28 +657,28 @@ ], "name": "ExitPositionCalldata", "nodeType": "StructDefinition", - "scope": 6539, - "src": "839:184:26", + "scope": 6428, + "src": "1003:194:26", "visibility": "public" }, { "body": { - "id": 5975, + "id": 5985, "nodeType": "Block", - "src": "1120:214:26", + "src": "1294:214:26", "statements": [ { "assignments": [ - 5943 + 5953 ], "declarations": [ { "constant": false, - "id": 5943, + "id": 5953, "name": "g", "nodeType": "VariableDeclaration", - "scope": 5975, - "src": "1130:9:26", + "scope": 5985, + "src": "1304:9:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -592,10 +686,10 @@ "typeString": "address" }, "typeName": { - "id": 5942, + "id": 5952, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1130:7:26", + "src": "1304:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -606,7 +700,7 @@ "visibility": "internal" } ], - "id": 5951, + "id": 5961, "initialValue": { "argumentTypes": null, "arguments": [ @@ -620,12 +714,12 @@ "arguments": [ { "argumentTypes": null, - "id": 5946, + "id": 5956, "name": "proxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5937, - "src": "1159:12:26", + "referencedDeclaration": 5947, + "src": "1333:12:26", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -639,18 +733,18 @@ "typeString": "address payable" } ], - "id": 5945, + "id": 5955, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, - "src": "1150:8:26", + "referencedDeclaration": 7244, + "src": "1324:8:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 5947, + "id": 5957, "isConstant": false, "isLValue": false, "isPure": false, @@ -658,13 +752,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1150:22:26", + "src": "1324:22:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 5948, + "id": 5958, "isConstant": false, "isLValue": false, "isPure": false, @@ -672,13 +766,13 @@ "memberName": "authority", "nodeType": "MemberAccess", "referencedDeclaration": 2812, - "src": "1150:32:26", + "src": "1324:32:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DSAuthority_$2799_$", "typeString": "function () view external returns (contract DSAuthority)" } }, - "id": 5949, + "id": 5959, "isConstant": false, "isLValue": false, "isPure": false, @@ -686,7 +780,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1150:34:26", + "src": "1324:34:26", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuthority_$2799", "typeString": "contract DSAuthority" @@ -700,20 +794,20 @@ "typeString": "contract DSAuthority" } ], - "id": 5944, + "id": 5954, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1142:7:26", + "src": "1316:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 5950, + "id": 5960, "isConstant": false, "isLValue": false, "isPure": false, @@ -721,14 +815,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1142:43:26", + "src": "1316:43:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1130:55:26" + "src": "1304:55:26" }, { "expression": { @@ -745,12 +839,12 @@ "arguments": [ { "argumentTypes": null, - "id": 5959, + "id": 5969, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5939, - "src": "1251:3:26", + "referencedDeclaration": 5949, + "src": "1425:3:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -764,20 +858,20 @@ "typeString": "address" } ], - "id": 5958, + "id": 5968, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1243:7:26", + "src": "1417:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 5960, + "id": 5970, "isConstant": false, "isLValue": false, "isPure": false, @@ -785,7 +879,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1243:12:26", + "src": "1417:12:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -799,20 +893,20 @@ "typeString": "address" } ], - "id": 5957, + "id": 5967, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1235:7:26", + "src": "1409:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes20_$", "typeString": "type(bytes20)" }, "typeName": "bytes20" }, - "id": 5961, + "id": 5971, "isConstant": false, "isLValue": false, "isPure": false, @@ -820,7 +914,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1235:21:26", + "src": "1409:21:26", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" @@ -834,20 +928,20 @@ "typeString": "bytes20" } ], - "id": 5956, + "id": 5966, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1227:7:26", + "src": "1401:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": "bytes32" }, - "id": 5962, + "id": 5972, "isConstant": false, "isLValue": false, "isPure": false, @@ -855,7 +949,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1227:30:26", + "src": "1401:30:26", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -871,12 +965,12 @@ "arguments": [ { "argumentTypes": null, - "id": 5964, + "id": 5974, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5943, - "src": "1279:1:26", + "referencedDeclaration": 5953, + "src": "1453:1:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -890,18 +984,18 @@ "typeString": "address" } ], - "id": 5963, + "id": 5973, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, - "src": "1271:7:26", + "src": "1445:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", "typeString": "type(contract DSGuard)" } }, - "id": 5965, + "id": 5975, "isConstant": false, "isLValue": false, "isPure": false, @@ -909,13 +1003,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1271:10:26", + "src": "1445:10:26", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 5966, + "id": 5976, "isConstant": false, "isLValue": false, "isPure": false, @@ -923,13 +1017,13 @@ "memberName": "ANY", "nodeType": "MemberAccess", "referencedDeclaration": 2958, - "src": "1271:14:26", + "src": "1445:14:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)" } }, - "id": 5967, + "id": 5977, "isConstant": false, "isLValue": false, "isPure": false, @@ -937,7 +1031,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1271:16:26", + "src": "1445:16:26", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -953,12 +1047,12 @@ "arguments": [ { "argumentTypes": null, - "id": 5969, + "id": 5979, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5943, - "src": "1309:1:26", + "referencedDeclaration": 5953, + "src": "1483:1:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -972,18 +1066,18 @@ "typeString": "address" } ], - "id": 5968, + "id": 5978, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, - "src": "1301:7:26", + "src": "1475:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", "typeString": "type(contract DSGuard)" } }, - "id": 5970, + "id": 5980, "isConstant": false, "isLValue": false, "isPure": false, @@ -991,13 +1085,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1301:10:26", + "src": "1475:10:26", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 5971, + "id": 5981, "isConstant": false, "isLValue": false, "isPure": false, @@ -1005,13 +1099,13 @@ "memberName": "ANY", "nodeType": "MemberAccess", "referencedDeclaration": 2958, - "src": "1301:14:26", + "src": "1475:14:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)" } }, - "id": 5972, + "id": 5982, "isConstant": false, "isLValue": false, "isPure": false, @@ -1019,7 +1113,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1301:16:26", + "src": "1475:16:26", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1046,12 +1140,12 @@ "arguments": [ { "argumentTypes": null, - "id": 5953, + "id": 5963, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5943, - "src": "1204:1:26", + "referencedDeclaration": 5953, + "src": "1378:1:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1065,18 +1159,18 @@ "typeString": "address" } ], - "id": 5952, + "id": 5962, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, - "src": "1196:7:26", + "src": "1370:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", "typeString": "type(contract DSGuard)" } }, - "id": 5954, + "id": 5964, "isConstant": false, "isLValue": false, "isPure": false, @@ -1084,13 +1178,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1196:10:26", + "src": "1370:10:26", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 5955, + "id": 5965, "isConstant": false, "isLValue": false, "isPure": false, @@ -1098,13 +1192,13 @@ "memberName": "permit", "nodeType": "MemberAccess", "referencedDeclaration": 3086, - "src": "1196:17:26", + "src": "1370:17:26", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32,bytes32) external" } }, - "id": 5973, + "id": 5983, "isConstant": false, "isLValue": false, "isPure": false, @@ -1112,36 +1206,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1196:131:26", + "src": "1370:131:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 5974, + "id": 5984, "nodeType": "ExpressionStatement", - "src": "1196:131:26" + "src": "1370:131:26" } ] }, "documentation": null, - "id": 5976, + "id": 5986, "implemented": true, "kind": "function", "modifiers": [], "name": "_proxyGuardPermit", "nodeType": "FunctionDefinition", "parameters": { - "id": 5940, + "id": 5950, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5937, + "id": 5947, "name": "proxyAddress", "nodeType": "VariableDeclaration", - "scope": 5976, - "src": "1056:28:26", + "scope": 5986, + "src": "1230:28:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1149,10 +1243,10 @@ "typeString": "address payable" }, "typeName": { - "id": 5936, + "id": 5946, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1056:15:26", + "src": "1230:15:26", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1164,11 +1258,11 @@ }, { "constant": false, - "id": 5939, + "id": 5949, "name": "src", "nodeType": "VariableDeclaration", - "scope": 5976, - "src": "1086:11:26", + "scope": 5986, + "src": "1260:11:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1176,10 +1270,10 @@ "typeString": "address" }, "typeName": { - "id": 5938, + "id": 5948, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1086:7:26", + "src": "1260:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1190,38 +1284,38 @@ "visibility": "internal" } ], - "src": "1055:43:26" + "src": "1229:43:26" }, "returnParameters": { - "id": 5941, + "id": 5951, "nodeType": "ParameterList", "parameters": [], - "src": "1120:0:26" + "src": "1294:0:26" }, - "scope": 6539, - "src": "1029:305:26", + "scope": 6428, + "src": "1203:305:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 6016, + "id": 6026, "nodeType": "Block", - "src": "1431:214:26", + "src": "1605:214:26", "statements": [ { "assignments": [ - 5984 + 5994 ], "declarations": [ { "constant": false, - "id": 5984, + "id": 5994, "name": "g", "nodeType": "VariableDeclaration", - "scope": 6016, - "src": "1441:9:26", + "scope": 6026, + "src": "1615:9:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1229,10 +1323,10 @@ "typeString": "address" }, "typeName": { - "id": 5983, + "id": 5993, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1441:7:26", + "src": "1615:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1243,7 +1337,7 @@ "visibility": "internal" } ], - "id": 5992, + "id": 6002, "initialValue": { "argumentTypes": null, "arguments": [ @@ -1257,12 +1351,12 @@ "arguments": [ { "argumentTypes": null, - "id": 5987, + "id": 5997, "name": "proxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5978, - "src": "1470:12:26", + "referencedDeclaration": 5988, + "src": "1644:12:26", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1276,18 +1370,18 @@ "typeString": "address payable" } ], - "id": 5986, + "id": 5996, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, - "src": "1461:8:26", + "referencedDeclaration": 7244, + "src": "1635:8:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 5988, + "id": 5998, "isConstant": false, "isLValue": false, "isPure": false, @@ -1295,13 +1389,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1461:22:26", + "src": "1635:22:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 5989, + "id": 5999, "isConstant": false, "isLValue": false, "isPure": false, @@ -1309,13 +1403,13 @@ "memberName": "authority", "nodeType": "MemberAccess", "referencedDeclaration": 2812, - "src": "1461:32:26", + "src": "1635:32:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DSAuthority_$2799_$", "typeString": "function () view external returns (contract DSAuthority)" } }, - "id": 5990, + "id": 6000, "isConstant": false, "isLValue": false, "isPure": false, @@ -1323,7 +1417,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1461:34:26", + "src": "1635:34:26", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuthority_$2799", "typeString": "contract DSAuthority" @@ -1337,20 +1431,20 @@ "typeString": "contract DSAuthority" } ], - "id": 5985, + "id": 5995, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1453:7:26", + "src": "1627:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 5991, + "id": 6001, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,14 +1452,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1453:43:26", + "src": "1627:43:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1441:55:26" + "src": "1615:55:26" }, { "expression": { @@ -1382,12 +1476,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6000, + "id": 6010, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5980, - "src": "1562:3:26", + "referencedDeclaration": 5990, + "src": "1736:3:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1401,20 +1495,20 @@ "typeString": "address" } ], - "id": 5999, + "id": 6009, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1554:7:26", + "src": "1728:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 6001, + "id": 6011, "isConstant": false, "isLValue": false, "isPure": false, @@ -1422,7 +1516,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1554:12:26", + "src": "1728:12:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1436,20 +1530,20 @@ "typeString": "address" } ], - "id": 5998, + "id": 6008, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1546:7:26", + "src": "1720:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes20_$", "typeString": "type(bytes20)" }, "typeName": "bytes20" }, - "id": 6002, + "id": 6012, "isConstant": false, "isLValue": false, "isPure": false, @@ -1457,7 +1551,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1546:21:26", + "src": "1720:21:26", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" @@ -1471,20 +1565,20 @@ "typeString": "bytes20" } ], - "id": 5997, + "id": 6007, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1538:7:26", + "src": "1712:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": "bytes32" }, - "id": 6003, + "id": 6013, "isConstant": false, "isLValue": false, "isPure": false, @@ -1492,7 +1586,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1538:30:26", + "src": "1712:30:26", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1508,12 +1602,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6005, + "id": 6015, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5984, - "src": "1590:1:26", + "referencedDeclaration": 5994, + "src": "1764:1:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1527,18 +1621,18 @@ "typeString": "address" } ], - "id": 6004, + "id": 6014, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, - "src": "1582:7:26", + "src": "1756:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", "typeString": "type(contract DSGuard)" } }, - "id": 6006, + "id": 6016, "isConstant": false, "isLValue": false, "isPure": false, @@ -1546,13 +1640,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1582:10:26", + "src": "1756:10:26", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 6007, + "id": 6017, "isConstant": false, "isLValue": false, "isPure": false, @@ -1560,13 +1654,13 @@ "memberName": "ANY", "nodeType": "MemberAccess", "referencedDeclaration": 2958, - "src": "1582:14:26", + "src": "1756:14:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)" } }, - "id": 6008, + "id": 6018, "isConstant": false, "isLValue": false, "isPure": false, @@ -1574,7 +1668,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1582:16:26", + "src": "1756:16:26", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1590,12 +1684,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6010, + "id": 6020, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5984, - "src": "1620:1:26", + "referencedDeclaration": 5994, + "src": "1794:1:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1609,18 +1703,18 @@ "typeString": "address" } ], - "id": 6009, + "id": 6019, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, - "src": "1612:7:26", + "src": "1786:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", "typeString": "type(contract DSGuard)" } }, - "id": 6011, + "id": 6021, "isConstant": false, "isLValue": false, "isPure": false, @@ -1628,13 +1722,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1612:10:26", + "src": "1786:10:26", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 6012, + "id": 6022, "isConstant": false, "isLValue": false, "isPure": false, @@ -1642,13 +1736,13 @@ "memberName": "ANY", "nodeType": "MemberAccess", "referencedDeclaration": 2958, - "src": "1612:14:26", + "src": "1786:14:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)" } }, - "id": 6013, + "id": 6023, "isConstant": false, "isLValue": false, "isPure": false, @@ -1656,7 +1750,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1612:16:26", + "src": "1786:16:26", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1683,12 +1777,12 @@ "arguments": [ { "argumentTypes": null, - "id": 5994, + "id": 6004, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5984, - "src": "1515:1:26", + "referencedDeclaration": 5994, + "src": "1689:1:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1702,18 +1796,18 @@ "typeString": "address" } ], - "id": 5993, + "id": 6003, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3163, - "src": "1507:7:26", + "src": "1681:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", "typeString": "type(contract DSGuard)" } }, - "id": 5995, + "id": 6005, "isConstant": false, "isLValue": false, "isPure": false, @@ -1721,13 +1815,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1507:10:26", + "src": "1681:10:26", "typeDescriptions": { "typeIdentifier": "t_contract$_DSGuard_$3163", "typeString": "contract DSGuard" } }, - "id": 5996, + "id": 6006, "isConstant": false, "isLValue": false, "isPure": false, @@ -1735,13 +1829,13 @@ "memberName": "forbid", "nodeType": "MemberAccess", "referencedDeclaration": 3114, - "src": "1507:17:26", + "src": "1681:17:26", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32,bytes32) external" } }, - "id": 6014, + "id": 6024, "isConstant": false, "isLValue": false, "isPure": false, @@ -1749,36 +1843,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1507:131:26", + "src": "1681:131:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6015, + "id": 6025, "nodeType": "ExpressionStatement", - "src": "1507:131:26" + "src": "1681:131:26" } ] }, "documentation": null, - "id": 6017, + "id": 6027, "implemented": true, "kind": "function", "modifiers": [], "name": "_proxyGuardForbid", "nodeType": "FunctionDefinition", "parameters": { - "id": 5981, + "id": 5991, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 5978, + "id": 5988, "name": "proxyAddress", "nodeType": "VariableDeclaration", - "scope": 6017, - "src": "1367:28:26", + "scope": 6027, + "src": "1541:28:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1786,10 +1880,10 @@ "typeString": "address payable" }, "typeName": { - "id": 5977, + "id": 5987, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1367:15:26", + "src": "1541:15:26", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1801,11 +1895,11 @@ }, { "constant": false, - "id": 5980, + "id": 5990, "name": "src", "nodeType": "VariableDeclaration", - "scope": 6017, - "src": "1397:11:26", + "scope": 6027, + "src": "1571:11:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1813,10 +1907,10 @@ "typeString": "address" }, "typeName": { - "id": 5979, + "id": 5989, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1397:7:26", + "src": "1571:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1827,38 +1921,38 @@ "visibility": "internal" } ], - "src": "1366:43:26" + "src": "1540:43:26" }, "returnParameters": { - "id": 5982, + "id": 5992, "nodeType": "ParameterList", "parameters": [], - "src": "1431:0:26" + "src": "1605:0:26" }, - "scope": 6539, - "src": "1340:305:26", + "scope": 6428, + "src": "1514:305:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 6045, + "id": 6055, "nodeType": "Block", - "src": "1708:264:26", + "src": "1882:264:26", "statements": [ { "assignments": [ - 6025 + 6035 ], "declarations": [ { "constant": false, - "id": 6025, + "id": 6035, "name": "underlying", "nodeType": "VariableDeclaration", - "scope": 6045, - "src": "1777:18:26", + "scope": 6055, + "src": "1951:18:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1866,10 +1960,10 @@ "typeString": "address" }, "typeName": { - "id": 6024, + "id": 6034, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1777:7:26", + "src": "1951:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1880,7 +1974,7 @@ "visibility": "internal" } ], - "id": 6031, + "id": 6041, "initialValue": { "argumentTypes": null, "arguments": [], @@ -1891,12 +1985,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6027, + "id": 6037, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6019, - "src": "1806:6:26", + "referencedDeclaration": 6029, + "src": "1980:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1910,18 +2004,18 @@ "typeString": "address" } ], - "id": 6026, + "id": 6036, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 858, - "src": "1798:7:26", + "src": "1972:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", "typeString": "type(contract ICToken)" } }, - "id": 6028, + "id": 6038, "isConstant": false, "isLValue": false, "isPure": false, @@ -1929,13 +2023,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:15:26", + "src": "1972:15:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ICToken_$858", "typeString": "contract ICToken" } }, - "id": 6029, + "id": 6039, "isConstant": false, "isLValue": false, "isPure": false, @@ -1943,13 +2037,13 @@ "memberName": "underlying", "nodeType": "MemberAccess", "referencedDeclaration": 809, - "src": "1798:26:26", + "src": "1972:26:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6030, + "id": 6040, "isConstant": false, "isLValue": false, "isPure": false, @@ -1957,14 +2051,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:28:26", + "src": "1972:28:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1777:49:26" + "src": "1951:49:26" }, { "expression": { @@ -1976,7 +2070,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 6041, + "id": 6051, "isConstant": false, "isLValue": false, "isPure": false, @@ -1986,12 +2080,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6037, + "id": 6047, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6019, - "src": "1884:6:26", + "referencedDeclaration": 6029, + "src": "2058:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1999,12 +2093,12 @@ }, { "argumentTypes": null, - "id": 6038, + "id": 6048, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6021, - "src": "1892:6:26", + "referencedDeclaration": 6031, + "src": "2066:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2027,12 +2121,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6034, + "id": 6044, "name": "underlying", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6025, - "src": "1864:10:26", + "referencedDeclaration": 6035, + "src": "2038:10:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2046,18 +2140,18 @@ "typeString": "address" } ], - "id": 6033, + "id": 6043, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, - "src": "1857:6:26", + "src": "2031:6:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", "typeString": "type(contract IERC20)" } }, - "id": 6035, + "id": 6045, "isConstant": false, "isLValue": false, "isPure": false, @@ -2065,13 +2159,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1857:18:26", + "src": "2031:18:26", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$120", "typeString": "contract IERC20" } }, - "id": 6036, + "id": 6046, "isConstant": false, "isLValue": false, "isPure": false, @@ -2079,13 +2173,13 @@ "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 77, - "src": "1857:26:26", + "src": "2031:26:26", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 6039, + "id": 6049, "isConstant": false, "isLValue": false, "isPure": false, @@ -2093,7 +2187,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1857:42:26", + "src": "2031:42:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2104,14 +2198,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "74727565", - "id": 6040, + "id": 6050, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1903:4:26", + "src": "2077:4:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2119,7 +2213,7 @@ }, "value": "true" }, - "src": "1857:50:26", + "src": "2031:50:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2128,14 +2222,14 @@ { "argumentTypes": null, "hexValue": "636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c6564", - "id": 6042, + "id": 6052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1921:34:26", + "src": "2095:34:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ca9a377afbc7098beb603cadabe94f2184e0ef6e022546af9554c879436a6067", @@ -2155,21 +2249,21 @@ "typeString": "literal_string \"cmpnd-mgr-ctoken-approved-failed\"" } ], - "id": 6032, + "id": 6042, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, - "src": "1836:7:26", + "referencedDeclaration": 7831, + "src": "2010:7:26", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6043, + "id": 6053, "isConstant": false, "isLValue": false, "isPure": false, @@ -2177,36 +2271,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1836:129:26", + "src": "2010:129:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6044, + "id": 6054, "nodeType": "ExpressionStatement", - "src": "1836:129:26" + "src": "2010:129:26" } ] }, "documentation": null, - "id": 6046, + "id": 6056, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 6022, + "id": 6032, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6019, + "id": 6029, "name": "cToken", "nodeType": "VariableDeclaration", - "scope": 6046, - "src": "1669:14:26", + "scope": 6056, + "src": "1843:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2214,10 +2308,10 @@ "typeString": "address" }, "typeName": { - "id": 6018, + "id": 6028, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1669:7:26", + "src": "1843:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2229,11 +2323,11 @@ }, { "constant": false, - "id": 6021, + "id": 6031, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6046, - "src": "1685:14:26", + "scope": 6056, + "src": "1859:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2241,10 +2335,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6020, + "id": 6030, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1685:7:26", + "src": "1859:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2254,25 +2348,25 @@ "visibility": "internal" } ], - "src": "1668:32:26" + "src": "1842:32:26" }, "returnParameters": { - "id": 6023, + "id": 6033, "nodeType": "ParameterList", "parameters": [], - "src": "1708:0:26" + "src": "1882:0:26" }, - "scope": 6539, - "src": "1651:321:26", + "scope": 6428, + "src": "1825:321:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 6088, + "id": 6098, "nodeType": "Block", - "src": "2118:339:26", + "src": "2292:339:26", "statements": [ { "condition": { @@ -2281,19 +2375,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 6059, + "id": 6069, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6057, + "id": 6067, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6050, - "src": "2132:6:26", + "referencedDeclaration": 6060, + "src": "2306:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2303,27 +2397,27 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 6058, + "id": 6068, "name": "CEtherAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6048, - "src": "2142:13:26", + "referencedDeclaration": 6058, + "src": "2316:13:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2132:23:26", + "src": "2306:23:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 6086, + "id": 6096, "nodeType": "Block", - "src": "2220:231:26", + "src": "2394:231:26", "statements": [ { "expression": { @@ -2334,12 +2428,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6080, + "id": 6090, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6052, - "src": "2326:9:26", + "referencedDeclaration": 6062, + "src": "2500:9:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2347,12 +2441,12 @@ }, { "argumentTypes": null, - "id": 6081, + "id": 6091, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6054, - "src": "2357:6:26", + "referencedDeclaration": 6064, + "src": "2531:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2383,12 +2477,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6074, + "id": 6084, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6050, - "src": "2274:6:26", + "referencedDeclaration": 6060, + "src": "2448:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2402,18 +2496,18 @@ "typeString": "address" } ], - "id": 6073, + "id": 6083, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 858, - "src": "2266:7:26", + "src": "2440:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", "typeString": "type(contract ICToken)" } }, - "id": 6075, + "id": 6085, "isConstant": false, "isLValue": false, "isPure": false, @@ -2421,13 +2515,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2266:15:26", + "src": "2440:15:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ICToken_$858", "typeString": "contract ICToken" } }, - "id": 6076, + "id": 6086, "isConstant": false, "isLValue": false, "isPure": false, @@ -2435,13 +2529,13 @@ "memberName": "underlying", "nodeType": "MemberAccess", "referencedDeclaration": 809, - "src": "2266:26:26", + "src": "2440:26:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6077, + "id": 6087, "isConstant": false, "isLValue": false, "isPure": false, @@ -2449,7 +2543,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2266:28:26", + "src": "2440:28:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2463,18 +2557,18 @@ "typeString": "address" } ], - "id": 6072, + "id": 6082, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 120, - "src": "2259:6:26", + "src": "2433:6:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", "typeString": "type(contract IERC20)" } }, - "id": 6078, + "id": 6088, "isConstant": false, "isLValue": false, "isPure": false, @@ -2482,13 +2576,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2259:36:26", + "src": "2433:36:26", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$120", "typeString": "contract IERC20" } }, - "id": 6079, + "id": 6089, "isConstant": false, "isLValue": false, "isPure": false, @@ -2496,13 +2590,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 59, - "src": "2259:45:26", + "src": "2433:45:26", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 6082, + "id": 6092, "isConstant": false, "isLValue": false, "isPure": false, @@ -2510,7 +2604,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2259:122:26", + "src": "2433:122:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2519,14 +2613,14 @@ { "argumentTypes": null, "hexValue": "636d706e642d6d67722d7472616e736665722d6661696c6564", - "id": 6083, + "id": 6093, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2399:27:26", + "src": "2573:27:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a0b492c6552587e508e318f471f5c8125b6edf0db99286af9f7919fd44bd2148", @@ -2546,21 +2640,21 @@ "typeString": "literal_string \"cmpnd-mgr-transfer-failed\"" } ], - "id": 6071, + "id": 6081, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, - "src": "2234:7:26", + "referencedDeclaration": 7831, + "src": "2408:7:26", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6084, + "id": 6094, "isConstant": false, "isLValue": false, "isPure": false, @@ -2568,25 +2662,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2234:206:26", + "src": "2408:206:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6085, + "id": 6095, "nodeType": "ExpressionStatement", - "src": "2234:206:26" + "src": "2408:206:26" } ] }, - "id": 6087, + "id": 6097, "nodeType": "IfStatement", - "src": "2128:323:26", + "src": "2302:323:26", "trueBody": { - "id": 6070, + "id": 6080, "nodeType": "Block", - "src": "2157:57:26", + "src": "2331:57:26", "statements": [ { "expression": { @@ -2595,14 +2689,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 6067, + "id": 6077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2200:2:26", + "src": "2374:2:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -2621,12 +2715,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6065, + "id": 6075, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6054, - "src": "2192:6:26", + "referencedDeclaration": 6064, + "src": "2366:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2644,18 +2738,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6060, + "id": 6070, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6052, - "src": "2171:9:26", + "referencedDeclaration": 6062, + "src": "2345:9:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 6063, + "id": 6073, "isConstant": false, "isLValue": false, "isPure": false, @@ -2663,13 +2757,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2171:14:26", + "src": "2345:14:26", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 6064, + "id": 6074, "isConstant": false, "isLValue": false, "isPure": false, @@ -2677,13 +2771,13 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2171:20:26", + "src": "2345:20:26", "typeDescriptions": { "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 6066, + "id": 6076, "isConstant": false, "isLValue": false, "isPure": false, @@ -2691,13 +2785,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2171:28:26", + "src": "2345:28:26", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 6068, + "id": 6078, "isConstant": false, "isLValue": false, "isPure": false, @@ -2705,15 +2799,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2171:32:26", + "src": "2345:32:26", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, - "id": 6069, + "id": 6079, "nodeType": "ExpressionStatement", - "src": "2171:32:26" + "src": "2345:32:26" } ] } @@ -2721,23 +2815,23 @@ ] }, "documentation": null, - "id": 6089, + "id": 6099, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 6055, + "id": 6065, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6048, + "id": 6058, "name": "CEtherAddress", "nodeType": "VariableDeclaration", - "scope": 6089, - "src": "2006:21:26", + "scope": 6099, + "src": "2180:21:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2745,10 +2839,10 @@ "typeString": "address" }, "typeName": { - "id": 6047, + "id": 6057, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2006:7:26", + "src": "2180:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2760,11 +2854,11 @@ }, { "constant": false, - "id": 6050, + "id": 6060, "name": "cToken", "nodeType": "VariableDeclaration", - "scope": 6089, - "src": "2037:14:26", + "scope": 6099, + "src": "2211:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2772,10 +2866,10 @@ "typeString": "address" }, "typeName": { - "id": 6049, + "id": 6059, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2037:7:26", + "src": "2211:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2787,11 +2881,11 @@ }, { "constant": false, - "id": 6052, + "id": 6062, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 6089, - "src": "2061:17:26", + "scope": 6099, + "src": "2235:17:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2799,10 +2893,10 @@ "typeString": "address" }, "typeName": { - "id": 6051, + "id": 6061, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2061:7:26", + "src": "2235:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2814,11 +2908,11 @@ }, { "constant": false, - "id": 6054, + "id": 6064, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6089, - "src": "2088:14:26", + "scope": 6099, + "src": "2262:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2826,10 +2920,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6053, + "id": 6063, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2088:7:26", + "src": "2262:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2839,25 +2933,25 @@ "visibility": "internal" } ], - "src": "1996:112:26" + "src": "2170:112:26" }, "returnParameters": { - "id": 6056, + "id": 6066, "nodeType": "ParameterList", "parameters": [], - "src": "2118:0:26" + "src": "2292:0:26" }, - "scope": 6539, - "src": "1978:479:26", + "scope": 6428, + "src": "2152:479:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 6130, + "id": 6140, "nodeType": "Block", - "src": "2561:310:26", + "src": "2735:310:26", "statements": [ { "condition": { @@ -2866,19 +2960,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 6100, + "id": 6110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6098, + "id": 6108, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6093, - "src": "2575:6:26", + "referencedDeclaration": 6103, + "src": "2749:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2888,27 +2982,27 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 6099, + "id": 6109, "name": "CEtherAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6091, - "src": "2585:13:26", + "referencedDeclaration": 6101, + "src": "2759:13:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2575:23:26", + "src": "2749:23:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 6128, + "id": 6138, "nodeType": "Block", - "src": "2674:191:26", + "src": "2848:191:26", "statements": [ { "expression": { @@ -2916,12 +3010,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6112, + "id": 6122, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6093, - "src": "2697:6:26", + "referencedDeclaration": 6103, + "src": "2871:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2929,12 +3023,12 @@ }, { "argumentTypes": null, - "id": 6113, + "id": 6123, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6095, - "src": "2705:6:26", + "referencedDeclaration": 6105, + "src": "2879:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2952,18 +3046,18 @@ "typeString": "uint256" } ], - "id": 6111, + "id": 6121, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6046, - "src": "2688:8:26", + "referencedDeclaration": 6056, + "src": "2862:8:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 6114, + "id": 6124, "isConstant": false, "isLValue": false, "isPure": false, @@ -2971,15 +3065,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2688:24:26", + "src": "2862:24:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6115, + "id": 6125, "nodeType": "ExpressionStatement", - "src": "2688:24:26" + "src": "2862:24:26" }, { "expression": { @@ -2991,7 +3085,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6124, + "id": 6134, "isConstant": false, "isLValue": false, "isPure": false, @@ -3001,12 +3095,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6121, + "id": 6131, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6095, - "src": "2779:6:26", + "referencedDeclaration": 6105, + "src": "2953:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3025,12 +3119,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6118, + "id": 6128, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6093, - "src": "2759:6:26", + "referencedDeclaration": 6103, + "src": "2933:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3044,18 +3138,18 @@ "typeString": "address" } ], - "id": 6117, + "id": 6127, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 858, - "src": "2751:7:26", + "src": "2925:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", "typeString": "type(contract ICToken)" } }, - "id": 6119, + "id": 6129, "isConstant": false, "isLValue": false, "isPure": false, @@ -3063,13 +3157,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2751:15:26", + "src": "2925:15:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ICToken_$858", "typeString": "contract ICToken" } }, - "id": 6120, + "id": 6130, "isConstant": false, "isLValue": false, "isPure": false, @@ -3077,13 +3171,13 @@ "memberName": "repayBorrow", "nodeType": "MemberAccess", "referencedDeclaration": 769, - "src": "2751:27:26", + "src": "2925:27:26", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) external returns (uint256)" } }, - "id": 6122, + "id": 6132, "isConstant": false, "isLValue": false, "isPure": false, @@ -3091,7 +3185,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2751:35:26", + "src": "2925:35:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3102,14 +3196,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6123, + "id": 6133, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2790:1:26", + "src": "2964:1:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3117,7 +3211,7 @@ }, "value": "0" }, - "src": "2751:40:26", + "src": "2925:40:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3126,14 +3220,14 @@ { "argumentTypes": null, "hexValue": "636d706e642d6d67722d63746f6b656e2d72657061792d6661696c6564", - "id": 6125, + "id": 6135, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2809:31:26", + "src": "2983:31:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_999cd91154bd9e69ce31d224fa6000cac622ab857a94bfb0df17582f1ba47dfe", @@ -3153,21 +3247,21 @@ "typeString": "literal_string \"cmpnd-mgr-ctoken-repay-failed\"" } ], - "id": 6116, + "id": 6126, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, - "src": "2726:7:26", + "referencedDeclaration": 7831, + "src": "2900:7:26", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6126, + "id": 6136, "isConstant": false, "isLValue": false, "isPure": false, @@ -3175,25 +3269,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2726:128:26", + "src": "2900:128:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6127, + "id": 6137, "nodeType": "ExpressionStatement", - "src": "2726:128:26" + "src": "2900:128:26" } ] }, - "id": 6129, + "id": 6139, "nodeType": "IfStatement", - "src": "2571:294:26", + "src": "2745:294:26", "trueBody": { - "id": 6110, + "id": 6120, "nodeType": "Block", - "src": "2600:68:26", + "src": "2774:68:26", "statements": [ { "expression": { @@ -3204,12 +3298,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6106, + "id": 6116, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6095, - "src": "2648:6:26", + "referencedDeclaration": 6105, + "src": "2822:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3230,12 +3324,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6102, + "id": 6112, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6093, - "src": "2622:6:26", + "referencedDeclaration": 6103, + "src": "2796:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3249,18 +3343,18 @@ "typeString": "address" } ], - "id": 6101, + "id": 6111, "name": "ICEther", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, - "src": "2614:7:26", + "src": "2788:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ICEther_$732_$", "typeString": "type(contract ICEther)" } }, - "id": 6103, + "id": 6113, "isConstant": false, "isLValue": false, "isPure": false, @@ -3268,13 +3362,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2614:15:26", + "src": "2788:15:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ICEther_$732", "typeString": "contract ICEther" } }, - "id": 6104, + "id": 6114, "isConstant": false, "isLValue": false, "isPure": false, @@ -3282,13 +3376,13 @@ "memberName": "repayBorrow", "nodeType": "MemberAccess", "referencedDeclaration": 698, - "src": "2614:27:26", + "src": "2788:27:26", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, - "id": 6105, + "id": 6115, "isConstant": false, "isLValue": false, "isPure": false, @@ -3296,13 +3390,13 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2614:33:26", + "src": "2788:33:26", "typeDescriptions": { "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$", "typeString": "function (uint256) pure returns (function () payable external)" } }, - "id": 6107, + "id": 6117, "isConstant": false, "isLValue": false, "isPure": false, @@ -3310,13 +3404,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2614:41:26", + "src": "2788:41:26", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, - "id": 6108, + "id": 6118, "isConstant": false, "isLValue": false, "isPure": false, @@ -3324,15 +3418,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2614:43:26", + "src": "2788:43:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6109, + "id": 6119, "nodeType": "ExpressionStatement", - "src": "2614:43:26" + "src": "2788:43:26" } ] } @@ -3340,23 +3434,23 @@ ] }, "documentation": null, - "id": 6131, + "id": 6141, "implemented": true, "kind": "function", "modifiers": [], "name": "_repayBorrow", "nodeType": "FunctionDefinition", "parameters": { - "id": 6096, + "id": 6106, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6091, + "id": 6101, "name": "CEtherAddress", "nodeType": "VariableDeclaration", - "scope": 6131, - "src": "2485:21:26", + "scope": 6141, + "src": "2659:21:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3364,10 +3458,10 @@ "typeString": "address" }, "typeName": { - "id": 6090, + "id": 6100, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2485:7:26", + "src": "2659:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3379,11 +3473,11 @@ }, { "constant": false, - "id": 6093, + "id": 6103, "name": "cToken", "nodeType": "VariableDeclaration", - "scope": 6131, - "src": "2508:14:26", + "scope": 6141, + "src": "2682:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3391,10 +3485,10 @@ "typeString": "address" }, "typeName": { - "id": 6092, + "id": 6102, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2508:7:26", + "src": "2682:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3406,11 +3500,11 @@ }, { "constant": false, - "id": 6095, + "id": 6105, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6131, - "src": "2524:14:26", + "scope": 6141, + "src": "2698:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3418,10 +3512,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6094, + "id": 6104, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2524:7:26", + "src": "2698:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3431,137 +3525,186 @@ "visibility": "internal" } ], - "src": "2484:55:26" + "src": "2658:55:26" }, "returnParameters": { - "id": 6097, + "id": 6107, "nodeType": "ParameterList", "parameters": [], - "src": "2561:0:26" + "src": "2735:0:26" }, - "scope": 6539, - "src": "2463:408:26", + "scope": 6428, + "src": "2637:408:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 6150, + "id": 6164, "nodeType": "Block", - "src": "2951:156:26", + "src": "3125:176:26", "statements": [ { - "expression": { + "assignments": [ + 6149 + ], + "declarations": [ + { + "constant": false, + "id": 6149, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 6164, + "src": "3135:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6148, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3135:4:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6156, + "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "commonType": { + "id": 6154, + "name": "redeemTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6145, + "src": "3177:12:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { "typeIdentifier": "t_uint256", "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6151, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6143, + "src": "3152:6:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6150, + "name": "ICToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "3144:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", + "typeString": "type(contract ICToken)" + } }, - "id": 6146, + "id": 6152, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6143, - "name": "redeemTokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6135, - "src": "3015:12:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6140, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6133, - "src": "2990:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6139, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "2982:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2982:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "redeemUnderlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 755, - "src": "2982:32:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) external returns (uint256)" - } - }, - "id": 6144, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2982:46:26", + "names": [], + "nodeType": "FunctionCall", + "src": "3144:15:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICToken_$858", + "typeString": "contract ICToken" + } + }, + "id": 6153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "redeemUnderlying", + "nodeType": "MemberAccess", + "referencedDeclaration": 755, + "src": "3144:32:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) external returns (uint256)" + } + }, + "id": 6155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3144:46:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3135:55:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6158, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6149, + "src": "3221:1:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3572,14 +3715,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6145, + "id": 6159, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3032:1:26", + "src": "3226:1:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3587,7 +3730,7 @@ }, "value": "0" }, - "src": "2982:51:26", + "src": "3221:6:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3596,14 +3739,14 @@ { "argumentTypes": null, "hexValue": "636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564", - "id": 6147, + "id": 6161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3047:43:26", + "src": "3241:43:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_422f21513af86bee962b3ccca9c32226e776b380fb2ed292445c5cf781b3f1f1", @@ -3623,21 +3766,21 @@ "typeString": "literal_string \"cmpnd-mgr-ctoken-redeem-underlying-failed\"" } ], - "id": 6138, + "id": 6157, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, - "src": "2961:7:26", + "referencedDeclaration": 7831, + "src": "3200:7:26", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6148, + "id": 6162, "isConstant": false, "isLValue": false, "isPure": false, @@ -3645,36 +3788,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2961:139:26", + "src": "3200:94:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6149, + "id": 6163, "nodeType": "ExpressionStatement", - "src": "2961:139:26" + "src": "3200:94:26" } ] }, "documentation": null, - "id": 6151, + "id": 6165, "implemented": true, "kind": "function", "modifiers": [], "name": "_redeemUnderlying", "nodeType": "FunctionDefinition", "parameters": { - "id": 6136, + "id": 6146, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6133, + "id": 6143, "name": "cToken", "nodeType": "VariableDeclaration", - "scope": 6151, - "src": "2904:14:26", + "scope": 6165, + "src": "3078:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3682,10 +3825,10 @@ "typeString": "address" }, "typeName": { - "id": 6132, + "id": 6142, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2904:7:26", + "src": "3078:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3697,11 +3840,11 @@ }, { "constant": false, - "id": 6135, + "id": 6145, "name": "redeemTokens", "nodeType": "VariableDeclaration", - "scope": 6151, - "src": "2920:20:26", + "scope": 6165, + "src": "3094:20:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3709,10 +3852,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6134, + "id": 6144, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2920:7:26", + "src": "3094:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3722,201 +3865,26 @@ "visibility": "internal" } ], - "src": "2903:38:26" + "src": "3077:38:26" }, "returnParameters": { - "id": 6137, + "id": 6147, "nodeType": "ParameterList", "parameters": [], - "src": "2951:0:26" + "src": "3125:0:26" }, - "scope": 6539, - "src": "2877:230:26", + "scope": 6428, + "src": "3051:250:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 6200, + "id": 6205, "nodeType": "Block", - "src": "3181:642:26", + "src": "3403:434:26", "statements": [ - { - "assignments": [ - 6159 - ], - "declarations": [ - { - "constant": false, - "id": 6159, - "name": "borrowedAmount", - "nodeType": "VariableDeclaration", - "scope": 6200, - "src": "3228:22:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6158, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3228:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6168, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6165, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8005, - "src": "3311:4:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DedgeExitManager_$6539", - "typeString": "contract DedgeExitManager" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DedgeExitManager_$6539", - "typeString": "contract DedgeExitManager" - } - ], - "id": 6164, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3303:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 6166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3303:13:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6161, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6155, - "src": "3261:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6160, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "3253:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6162, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3253:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "borrowBalanceCurrent", - "nodeType": "MemberAccess", - "referencedDeclaration": 790, - "src": "3253:36:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 6167, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3253:73:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3228:98:26" - }, { "condition": { "argumentTypes": null, @@ -3924,19 +3892,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 6171, + "id": 6176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6169, + "id": 6174, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6155, - "src": "3399:6:26", + "referencedDeclaration": 6169, + "src": "3475:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3946,44 +3914,44 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 6170, + "id": 6175, "name": "CEtherAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6153, - "src": "3409:13:26", + "referencedDeclaration": 6167, + "src": "3485:13:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3399:23:26", + "src": "3475:23:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 6193, + "id": 6198, "nodeType": "IfStatement", - "src": "3395:360:26", + "src": "3471:306:26", "trueBody": { - "id": 6192, + "id": 6197, "nodeType": "Block", - "src": "3424:331:26", + "src": "3500:277:26", "statements": [ { "assignments": [ - 6173 + 6178 ], "declarations": [ { "constant": false, - "id": 6173, + "id": 6178, "name": "underlying", "nodeType": "VariableDeclaration", - "scope": 6192, - "src": "3438:18:26", + "scope": 6197, + "src": "3514:18:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3991,10 +3959,10 @@ "typeString": "address" }, "typeName": { - "id": 6172, + "id": 6177, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3438:7:26", + "src": "3514:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4005,7 +3973,7 @@ "visibility": "internal" } ], - "id": 6179, + "id": 6184, "initialValue": { "argumentTypes": null, "arguments": [], @@ -4016,12 +3984,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6175, + "id": 6180, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6155, - "src": "3467:6:26", + "referencedDeclaration": 6169, + "src": "3543:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4035,18 +4003,18 @@ "typeString": "address" } ], - "id": 6174, + "id": 6179, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 858, - "src": "3459:7:26", + "src": "3535:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", "typeString": "type(contract ICToken)" } }, - "id": 6176, + "id": 6181, "isConstant": false, "isLValue": false, "isPure": false, @@ -4054,13 +4022,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3459:15:26", + "src": "3535:15:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ICToken_$858", "typeString": "contract ICToken" } }, - "id": 6177, + "id": 6182, "isConstant": false, "isLValue": false, "isPure": false, @@ -4068,13 +4036,13 @@ "memberName": "underlying", "nodeType": "MemberAccess", "referencedDeclaration": 809, - "src": "3459:26:26", + "src": "3535:26:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6178, + "id": 6183, "isConstant": false, "isLValue": false, "isPure": false, @@ -4082,27 +4050,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3459:28:26", + "src": "3535:28:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3438:49:26" + "src": "3514:49:26" }, { "assignments": [ - 6181 + 6186 ], "declarations": [ { "constant": false, - "id": 6181, + "id": 6186, "name": "ethAmount", "nodeType": "VariableDeclaration", - "scope": 6192, - "src": "3545:17:26", + "scope": 6197, + "src": "3621:17:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4110,10 +4078,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6180, + "id": 6185, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3545:7:26", + "src": "3621:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4123,18 +4091,18 @@ "visibility": "internal" } ], - "id": 6186, + "id": 6191, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6183, + "id": 6188, "name": "underlying", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6173, - "src": "3603:10:26", + "referencedDeclaration": 6178, + "src": "3662:10:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4142,12 +4110,12 @@ }, { "argumentTypes": null, - "id": 6184, - "name": "borrowedAmount", + "id": 6189, + "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6159, - "src": "3631:14:26", + "referencedDeclaration": 6171, + "src": "3674:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4165,18 +4133,18 @@ "typeString": "uint256" } ], - "id": 6182, + "id": 6187, "name": "_getEthToTokenOutput", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5169, - "src": "3565:20:26", + "src": "3641:20:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) view returns (uint256)" } }, - "id": 6185, + "id": 6190, "isConstant": false, "isLValue": false, "isPure": false, @@ -4184,14 +4152,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3565:94:26", + "src": "3641:40:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3545:114:26" + "src": "3621:60:26" }, { "expression": { @@ -4199,12 +4167,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6188, + "id": 6193, "name": "underlying", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6173, - "src": "3722:10:26", + "referencedDeclaration": 6178, + "src": "3744:10:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4212,12 +4180,12 @@ }, { "argumentTypes": null, - "id": 6189, + "id": 6194, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6181, - "src": "3734:9:26", + "referencedDeclaration": 6186, + "src": "3756:9:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4235,7 +4203,7 @@ "typeString": "uint256" } ], - "id": 6187, + "id": 6192, "name": "_ethToToken", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4243,13 +4211,13 @@ 4988 ], "referencedDeclaration": 4959, - "src": "3710:11:26", + "src": "3732:11:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) returns (uint256)" } }, - "id": 6190, + "id": 6195, "isConstant": false, "isLValue": false, "isPure": false, @@ -4257,15 +4225,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3710:34:26", + "src": "3732:34:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 6191, + "id": 6196, "nodeType": "ExpressionStatement", - "src": "3710:34:26" + "src": "3732:34:26" } ] } @@ -4276,12 +4244,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6195, + "id": 6200, "name": "CEtherAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6153, - "src": "3778:13:26", + "referencedDeclaration": 6167, + "src": "3800:13:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4289,12 +4257,12 @@ }, { "argumentTypes": null, - "id": 6196, + "id": 6201, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6155, - "src": "3793:6:26", + "referencedDeclaration": 6169, + "src": "3815:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4302,12 +4270,12 @@ }, { "argumentTypes": null, - "id": 6197, - "name": "borrowedAmount", + "id": 6202, + "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6159, - "src": "3801:14:26", + "referencedDeclaration": 6171, + "src": "3823:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4329,18 +4297,18 @@ "typeString": "uint256" } ], - "id": 6194, + "id": 6199, "name": "_repayBorrow", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6131, - "src": "3765:12:26", + "referencedDeclaration": 6141, + "src": "3787:12:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 6198, + "id": 6203, "isConstant": false, "isLValue": false, "isPure": false, @@ -4348,36 +4316,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3765:51:26", + "src": "3787:43:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6199, + "id": 6204, "nodeType": "ExpressionStatement", - "src": "3765:51:26" + "src": "3787:43:26" } ] }, "documentation": null, - "id": 6201, + "id": 6206, "implemented": true, "kind": "function", "modifiers": [], "name": "_repayDebt", "nodeType": "FunctionDefinition", "parameters": { - "id": 6156, + "id": 6172, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6153, + "id": 6167, "name": "CEtherAddress", "nodeType": "VariableDeclaration", - "scope": 6201, - "src": "3133:21:26", + "scope": 6206, + "src": "3327:21:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4385,10 +4353,10 @@ "typeString": "address" }, "typeName": { - "id": 6152, + "id": 6166, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3133:7:26", + "src": "3327:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4400,11 +4368,11 @@ }, { "constant": false, - "id": 6155, + "id": 6169, "name": "cToken", "nodeType": "VariableDeclaration", - "scope": 6201, - "src": "3156:14:26", + "scope": 6206, + "src": "3350:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4412,10 +4380,10 @@ "typeString": "address" }, "typeName": { - "id": 6154, + "id": 6168, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3156:7:26", + "src": "3350:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4424,215 +4392,66 @@ }, "value": null, "visibility": "internal" - } - ], - "src": "3132:39:26" - }, - "returnParameters": { - "id": 6157, + }, + { + "constant": false, + "id": 6171, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 6206, + "src": "3366:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6170, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3366:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3326:55:26" + }, + "returnParameters": { + "id": 6173, "nodeType": "ParameterList", "parameters": [], - "src": "3181:0:26" + "src": "3403:0:26" }, - "scope": 6539, - "src": "3113:710:26", + "scope": 6428, + "src": "3307:530:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 6246, + "id": 6242, "nodeType": "Block", - "src": "3944:419:26", + "src": "3984:260:26", "statements": [ - { - "assignments": [ - 6211 - ], - "declarations": [ - { - "constant": false, - "id": 6211, - "name": "suppliedAmount", - "nodeType": "VariableDeclaration", - "scope": 6246, - "src": "3981:22:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3981:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6220, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6217, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8005, - "src": "4063:4:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DedgeExitManager_$6539", - "typeString": "contract DedgeExitManager" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DedgeExitManager_$6539", - "typeString": "contract DedgeExitManager" - } - ], - "id": 6216, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4055:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 6218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4055:13:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6213, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6205, - "src": "4014:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6212, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "4006:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6214, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4006:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOfUnderlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 804, - "src": "4006:35:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 6219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4006:72:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3981:97:26" - }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6222, + "id": 6218, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6205, - "src": "4132:6:26", + "referencedDeclaration": 6210, + "src": "4037:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4640,12 +4459,12 @@ }, { "argumentTypes": null, - "id": 6223, - "name": "suppliedAmount", + "id": 6219, + "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6211, - "src": "4140:14:26", + "referencedDeclaration": 6212, + "src": "4045:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4663,18 +4482,18 @@ "typeString": "uint256" } ], - "id": 6221, + "id": 6217, "name": "_redeemUnderlying", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6151, - "src": "4114:17:26", + "referencedDeclaration": 6165, + "src": "4019:17:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 6224, + "id": 6220, "isConstant": false, "isLValue": false, "isPure": false, @@ -4682,15 +4501,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4114:41:26", + "src": "4019:33:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6225, + "id": 6221, "nodeType": "ExpressionStatement", - "src": "4114:41:26" + "src": "4019:33:26" }, { "condition": { @@ -4699,19 +4518,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 6228, + "id": 6224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6226, + "id": 6222, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6205, - "src": "4170:6:26", + "referencedDeclaration": 6210, + "src": "4067:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4721,66 +4540,66 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 6227, + "id": 6223, "name": "CEtherAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6203, - "src": "4180:13:26", + "referencedDeclaration": 6208, + "src": "4077:13:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4170:23:26", + "src": "4067:23:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 6232, + "id": 6228, "nodeType": "IfStatement", - "src": "4166:75:26", + "src": "4063:67:26", "trueBody": { - "id": 6231, + "id": 6227, "nodeType": "Block", - "src": "4195:46:26", + "src": "4092:38:26", "statements": [ { "expression": { "argumentTypes": null, - "id": 6229, - "name": "suppliedAmount", + "id": 6225, + "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6211, - "src": "4216:14:26", + "referencedDeclaration": 6212, + "src": "4113:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 6209, - "id": 6230, + "functionReturnParameters": 6216, + "id": 6226, "nodeType": "Return", - "src": "4209:21:26" + "src": "4106:13:26" } ] } }, { "assignments": [ - 6234 + 6230 ], "declarations": [ { "constant": false, - "id": 6234, + "id": 6230, "name": "underlying", "nodeType": "VariableDeclaration", - "scope": 6246, - "src": "4251:18:26", + "scope": 6242, + "src": "4140:18:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4788,10 +4607,10 @@ "typeString": "address" }, "typeName": { - "id": 6233, + "id": 6229, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4251:7:26", + "src": "4140:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4802,7 +4621,7 @@ "visibility": "internal" } ], - "id": 6240, + "id": 6236, "initialValue": { "argumentTypes": null, "arguments": [], @@ -4813,12 +4632,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6236, + "id": 6232, "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6205, - "src": "4280:6:26", + "referencedDeclaration": 6210, + "src": "4169:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4832,18 +4651,18 @@ "typeString": "address" } ], - "id": 6235, + "id": 6231, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 858, - "src": "4272:7:26", + "src": "4161:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", "typeString": "type(contract ICToken)" } }, - "id": 6237, + "id": 6233, "isConstant": false, "isLValue": false, "isPure": false, @@ -4851,13 +4670,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4272:15:26", + "src": "4161:15:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ICToken_$858", "typeString": "contract ICToken" } }, - "id": 6238, + "id": 6234, "isConstant": false, "isLValue": false, "isPure": false, @@ -4865,13 +4684,13 @@ "memberName": "underlying", "nodeType": "MemberAccess", "referencedDeclaration": 809, - "src": "4272:26:26", + "src": "4161:26:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6239, + "id": 6235, "isConstant": false, "isLValue": false, "isPure": false, @@ -4879,14 +4698,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4272:28:26", + "src": "4161:28:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4251:49:26" + "src": "4140:49:26" }, { "expression": { @@ -4894,12 +4713,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6242, + "id": 6238, "name": "underlying", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6234, - "src": "4329:10:26", + "referencedDeclaration": 6230, + "src": "4218:10:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4907,12 +4726,12 @@ }, { "argumentTypes": null, - "id": 6243, - "name": "suppliedAmount", + "id": 6239, + "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6211, - "src": "4341:14:26", + "referencedDeclaration": 6212, + "src": "4230:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4930,7 +4749,7 @@ "typeString": "uint256" } ], - "id": 6241, + "id": 6237, "name": "_tokenToEth", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -4938,13 +4757,13 @@ 5045 ], "referencedDeclaration": 5006, - "src": "4317:11:26", + "src": "4206:11:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) returns (uint256)" } }, - "id": 6244, + "id": 6240, "isConstant": false, "isLValue": false, "isPure": false, @@ -4952,37 +4771,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4317:39:26", + "src": "4206:31:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 6209, - "id": 6245, + "functionReturnParameters": 6216, + "id": 6241, "nodeType": "Return", - "src": "4310:46:26" + "src": "4199:38:26" } ] }, "documentation": null, - "id": 6247, + "id": 6243, "implemented": true, "kind": "function", "modifiers": [], "name": "_retrieveCollateral", "nodeType": "FunctionDefinition", "parameters": { - "id": 6206, + "id": 6213, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6203, + "id": 6208, "name": "CEtherAddress", "nodeType": "VariableDeclaration", - "scope": 6247, - "src": "3858:21:26", + "scope": 6243, + "src": "3881:21:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4990,10 +4809,10 @@ "typeString": "address" }, "typeName": { - "id": 6202, + "id": 6207, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3858:7:26", + "src": "3881:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5005,11 +4824,11 @@ }, { "constant": false, - "id": 6205, + "id": 6210, "name": "cToken", "nodeType": "VariableDeclaration", - "scope": 6247, - "src": "3881:14:26", + "scope": 6243, + "src": "3912:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5017,10 +4836,10 @@ "typeString": "address" }, "typeName": { - "id": 6204, + "id": 6209, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3881:7:26", + "src": "3912:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5029,21 +4848,47 @@ }, "value": null, "visibility": "internal" + }, + { + "constant": false, + "id": 6212, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 6243, + "src": "3936:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6211, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3936:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" } ], - "src": "3857:39:26" + "src": "3871:85:26" }, "returnParameters": { - "id": 6209, + "id": 6216, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6208, + "id": 6215, "name": "", "nodeType": "VariableDeclaration", - "scope": 6247, - "src": "3931:7:26", + "scope": 6243, + "src": "3975:7:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5051,10 +4896,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6207, + "id": 6214, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3931:7:26", + "src": "3975:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5064,47 +4909,47 @@ "visibility": "internal" } ], - "src": "3930:9:26" + "src": "3974:9:26" }, - "scope": 6539, - "src": "3829:534:26", + "scope": 6428, + "src": "3843:401:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 6346, + "id": 6358, "nodeType": "Block", - "src": "4524:961:26", + "src": "4405:1152:26", "statements": [ { "assignments": [ - 6259 + 6255 ], "declarations": [ { "constant": false, - "id": 6259, + "id": 6255, "name": "epCalldata", "nodeType": "VariableDeclaration", - "scope": 6346, - "src": "4570:38:26", + "scope": 6358, + "src": "4451:38:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", "typeString": "struct DedgeExitManager.ExitPositionCalldata" }, "typeName": { "contractScope": null, - "id": 6258, + "id": 6254, "name": "ExitPositionCalldata", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5935, - "src": "4570:20:26", + "referencedDeclaration": 5945, + "src": "4451:20:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_storage_ptr", + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_storage_ptr", "typeString": "struct DedgeExitManager.ExitPositionCalldata" } }, @@ -5112,18 +4957,18 @@ "visibility": "internal" } ], - "id": 6266, + "id": 6262, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6262, + "id": 6258, "name": "_params", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6255, - "src": "4635:7:26", + "referencedDeclaration": 6251, + "src": "4516:7:26", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -5134,28 +4979,28 @@ "components": [ { "argumentTypes": null, - "id": 6263, + "id": 6259, "name": "ExitPositionCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5935, - "src": "4657:20:26", + "referencedDeclaration": 5945, + "src": "4538:20:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5935_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5945_storage_ptr_$", "typeString": "type(struct DedgeExitManager.ExitPositionCalldata storage pointer)" } } ], - "id": 6264, + "id": 6260, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4656:22:26", + "src": "4537:22:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5935_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5945_storage_ptr_$", "typeString": "type(struct DedgeExitManager.ExitPositionCalldata storage pointer)" } } @@ -5167,24 +5012,24 @@ "typeString": "bytes calldata" }, { - "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5935_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5945_storage_ptr_$", "typeString": "type(struct DedgeExitManager.ExitPositionCalldata storage pointer)" } ], "expression": { "argumentTypes": null, - "id": 6260, + "id": 6256, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "4611:3:26", + "referencedDeclaration": 7814, + "src": "4492:3:26", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 6261, + "id": 6257, "isConstant": false, "isLValue": false, "isPure": true, @@ -5192,13 +5037,13 @@ "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4611:10:26", + "src": "4492:10:26", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 6265, + "id": 6261, "isConstant": false, "isLValue": false, "isPure": false, @@ -5206,116 +5051,167 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4611:77:26", + "src": "4492:77:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory", + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory", "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4570:118:26" + "src": "4451:118:26" }, { "assignments": [ - 6268 + 6264 ], "declarations": [ { "constant": false, - "id": 6268, - "name": "CEtherAddress", + "id": 6264, + "name": "addressRegistry", "nodeType": "VariableDeclaration", - "scope": 6346, - "src": "4699:21:26", + "scope": 6358, + "src": "4580:31:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" }, "typeName": { - "id": 6267, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4699:7:26", - "stateMutability": "nonpayable", + "contractScope": null, + "id": 6263, + "name": "AddressRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7550, + "src": "4580:15:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" } }, "value": null, "visibility": "internal" } ], - "id": 6275, + "id": 6269, "initialValue": { "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { + "arguments": [ + { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6270, - "name": "epCalldata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "4752:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" - } - }, - "id": 6271, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "addressRegistryAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 5928, - "src": "4752:50:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6269, - "name": "AddressRegistry", + "argumentTypes": null, + "id": 6266, + "name": "epCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, - "src": "4723:15:26", + "referencedDeclaration": 6255, + "src": "4643:10:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", - "typeString": "type(contract AddressRegistry)" + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" } }, - "id": 6272, + "id": 6267, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "kind": "typeConversion", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4723:89:26", + "memberName": "addressRegistryAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 5938, + "src": "4643:33:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6265, + "name": "AddressRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7550, + "src": "4614:15:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", + "typeString": "type(contract AddressRegistry)" + } + }, + "id": 6268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4614:72:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4580:106:26" + }, + { + "assignments": [ + 6271 + ], + "declarations": [ + { + "constant": false, + "id": 6271, + "name": "CEtherAddress", + "nodeType": "VariableDeclaration", + "scope": 6358, + "src": "4696:21:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4696:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6275, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 6272, + "name": "addressRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6264, + "src": "4720:15:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -5326,8 +5222,8 @@ "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, - "src": "4723:116:26", + "referencedDeclaration": 7510, + "src": "4720:29:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" @@ -5341,20 +5237,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4723:118:26", + "src": "4720:31:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4699:142:26" + "src": "4696:55:26" }, { "body": { - "id": 6296, + "id": 6302, "nodeType": "Block", - "src": "4958:77:26", + "src": "4867:178:26", "statements": [ { "expression": { @@ -5366,8 +5262,8 @@ "name": "CEtherAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6268, - "src": "4983:13:26", + "referencedDeclaration": 6271, + "src": "4909:13:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5375,58 +5271,146 @@ }, { "argumentTypes": null, - "baseExpression": { + "expression": { "argumentTypes": null, - "expression": { + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6290, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "4940:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } + }, + "id": 6291, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "debtMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5941, + "src": "4940:21:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory[] memory" + } + }, + "id": 6293, + "indexExpression": { "argumentTypes": null, - "id": 6290, - "name": "epCalldata", + "id": 6292, + "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "4998:10:26", + "referencedDeclaration": 6277, + "src": "4962:1:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6291, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "debtCTokens", - "nodeType": "MemberAccess", - "referencedDeclaration": 5931, - "src": "4998:22:26", + "nodeType": "IndexAccess", + "src": "4940:24:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" + "typeIdentifier": "t_struct$_DebtMarket_$5929_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory" } }, - "id": 6293, - "indexExpression": { + "id": 6294, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "cToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 5926, + "src": "4940:31:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { "argumentTypes": null, - "id": 6292, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6277, - "src": "5021:1:26", + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6295, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "4989:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } + }, + "id": 6296, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "debtMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5941, + "src": "4989:21:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory[] memory" + } + }, + "id": 6298, + "indexExpression": { + "argumentTypes": null, + "id": 6297, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6277, + "src": "5011:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4989:24:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_DebtMarket_$5929_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory" } }, + "id": 6299, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4998:25:26", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 5928, + "src": "4989:31:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], @@ -5439,20 +5423,24 @@ { "typeIdentifier": "t_address", "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], "id": 6288, "name": "_repayDebt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6201, - "src": "4972:10:26", + "referencedDeclaration": 6206, + "src": "4881:10:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" } }, - "id": 6294, + "id": 6300, "isConstant": false, "isLValue": false, "isPure": false, @@ -5460,15 +5448,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4972:52:26", + "src": "4881:153:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6295, + "id": 6301, "nodeType": "ExpressionStatement", - "src": "4972:52:26" + "src": "4881:153:26" } ] }, @@ -5490,7 +5478,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6277, - "src": "4918:1:26", + "src": "4828:1:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5508,10 +5496,10 @@ "name": "epCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "4922:10:26", + "referencedDeclaration": 6255, + "src": "4832:10:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" } }, @@ -5520,13 +5508,13 @@ "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "debtCTokens", + "memberName": "debtMarket", "nodeType": "MemberAccess", - "referencedDeclaration": 5931, - "src": "4922:22:26", + "referencedDeclaration": 5941, + "src": "4832:21:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory[] memory" } }, "id": 6283, @@ -5537,19 +5525,19 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4922:29:26", + "src": "4832:28:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4918:33:26", + "src": "4828:32:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 6297, + "id": 6303, "initializationExpression": { "assignments": [ 6277 @@ -5560,8 +5548,8 @@ "id": 6277, "name": "i", "nodeType": "VariableDeclaration", - "scope": 6297, - "src": "4903:9:26", + "scope": 6303, + "src": "4813:9:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5572,7 +5560,7 @@ "id": 6276, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4903:7:26", + "src": "4813:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5593,7 +5581,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4915:1:26", + "src": "4825:1:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5602,7 +5590,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4903:13:26" + "src": "4813:13:26" }, "loopExpression": { "expression": { @@ -5615,7 +5603,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4953:3:26", + "src": "4862:3:26", "subExpression": { "argumentTypes": null, "id": 6285, @@ -5623,7 +5611,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6277, - "src": "4953:1:26", + "src": "4862:1:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5636,23 +5624,23 @@ }, "id": 6287, "nodeType": "ExpressionStatement", - "src": "4953:3:26" + "src": "4862:3:26" }, "nodeType": "ForStatement", - "src": "4898:137:26" + "src": "4808:237:26" }, { "assignments": [ - 6299 + 6305 ], "declarations": [ { "constant": false, - "id": 6299, + "id": 6305, "name": "totalEthAmount", "nodeType": "VariableDeclaration", - "scope": 6346, - "src": "5044:22:26", + "scope": 6358, + "src": "5055:22:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5660,10 +5648,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6298, + "id": 6304, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5044:7:26", + "src": "5055:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5673,33 +5661,33 @@ "visibility": "internal" } ], - "id": 6300, + "id": 6306, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "5044:22:26" + "src": "5055:22:26" }, { "body": { - "id": 6323, + "id": 6335, "nodeType": "Block", - "src": "5142:156:26", + "src": "5152:217:26", "statements": [ { "expression": { "argumentTypes": null, - "id": 6321, + "id": 6333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 6313, + "id": 6319, "name": "totalEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6299, - "src": "5156:14:26", + "referencedDeclaration": 6305, + "src": "5166:14:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5712,12 +5700,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6315, + "id": 6321, "name": "CEtherAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6268, - "src": "5211:13:26", + "referencedDeclaration": 6271, + "src": "5221:13:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5725,58 +5713,146 @@ }, { "argumentTypes": null, - "baseExpression": { + "expression": { "argumentTypes": null, - "expression": { + "baseExpression": { "argumentTypes": null, - "id": 6316, - "name": "epCalldata", + "expression": { + "argumentTypes": null, + "id": 6322, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "5252:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } + }, + "id": 6323, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5944, + "src": "5252:27:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory[] memory" + } + }, + "id": 6325, + "indexExpression": { + "argumentTypes": null, + "id": 6324, + "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "5242:10:26", + "referencedDeclaration": 6308, + "src": "5280:1:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6317, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "collateralCTokens", - "nodeType": "MemberAccess", - "referencedDeclaration": 5934, - "src": "5242:28:26", + "nodeType": "IndexAccess", + "src": "5252:30:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" + "typeIdentifier": "t_struct$_CollateralMarket_$5934_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory" } }, - "id": 6319, - "indexExpression": { + "id": 6326, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "cToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 5931, + "src": "5252:37:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { "argumentTypes": null, - "id": 6318, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6302, - "src": "5271:1:26", + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6327, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "5307:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } + }, + "id": 6328, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5944, + "src": "5307:27:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory[] memory" + } + }, + "id": 6330, + "indexExpression": { + "argumentTypes": null, + "id": 6329, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6308, + "src": "5335:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5307:30:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_CollateralMarket_$5934_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory" } }, + "id": 6331, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5242:31:26", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 5933, + "src": "5307:37:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], @@ -5789,20 +5865,24 @@ { "typeIdentifier": "t_address", "typeString": "address" - } - ], - "id": 6314, + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6320, "name": "_retrieveCollateral", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6247, - "src": "5174:19:26", + "referencedDeclaration": 6243, + "src": "5184:19:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$", - "typeString": "function (address,address) returns (uint256)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,address,uint256) returns (uint256)" } }, - "id": 6320, + "id": 6332, "isConstant": false, "isLValue": false, "isPure": false, @@ -5810,21 +5890,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5174:113:26", + "src": "5184:174:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5156:131:26", + "src": "5166:192:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 6322, + "id": 6334, "nodeType": "ExpressionStatement", - "src": "5156:131:26" + "src": "5166:192:26" } ] }, @@ -5834,19 +5914,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6309, + "id": 6315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6305, + "id": 6311, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6302, - "src": "5096:1:26", + "referencedDeclaration": 6308, + "src": "5107:1:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5860,32 +5940,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6306, + "id": 6312, "name": "epCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "5100:10:26", + "referencedDeclaration": 6255, + "src": "5111:10:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" } }, - "id": 6307, + "id": 6313, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "collateralCTokens", + "memberName": "collateralMarket", "nodeType": "MemberAccess", - "referencedDeclaration": 5934, - "src": "5100:28:26", + "referencedDeclaration": 5944, + "src": "5111:27:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory[] memory" } }, - "id": 6308, + "id": 6314, "isConstant": false, "isLValue": false, "isPure": false, @@ -5893,31 +5973,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "5100:35:26", + "src": "5111:34:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5096:39:26", + "src": "5107:38:26", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 6324, + "id": 6336, "initializationExpression": { "assignments": [ - 6302 + 6308 ], "declarations": [ { "constant": false, - "id": 6302, + "id": 6308, "name": "i", "nodeType": "VariableDeclaration", - "scope": 6324, - "src": "5081:9:26", + "scope": 6336, + "src": "5092:9:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5925,10 +6005,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6301, + "id": 6307, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5081:7:26", + "src": "5092:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5938,18 +6018,18 @@ "visibility": "internal" } ], - "id": 6304, + "id": 6310, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 6303, + "id": 6309, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5093:1:26", + "src": "5104:1:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5958,12 +6038,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5081:13:26" + "src": "5092:13:26" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 6311, + "id": 6317, "isConstant": false, "isLValue": false, "isPure": false, @@ -5971,15 +6051,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5137:3:26", + "src": "5147:3:26", "subExpression": { "argumentTypes": null, - "id": 6310, + "id": 6316, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6302, - "src": "5137:1:26", + "referencedDeclaration": 6308, + "src": "5147:1:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5990,12 +6070,12 @@ "typeString": "uint256" } }, - "id": 6312, + "id": 6318, "nodeType": "ExpressionStatement", - "src": "5137:3:26" + "src": "5147:3:26" }, "nodeType": "ForStatement", - "src": "5076:222:26" + "src": "5087:282:26" }, { "expression": { @@ -6004,14 +6084,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 6343, + "id": 6355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5475:2:26", + "src": "5547:2:26", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -6033,12 +6113,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6340, + "id": 6352, "name": "_protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6253, - "src": "5451:12:26", + "referencedDeclaration": 6249, + "src": "5523:12:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6057,12 +6137,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6337, + "id": 6349, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6251, - "src": "5441:4:26", + "referencedDeclaration": 6247, + "src": "5513:4:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6081,12 +6161,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6334, + "id": 6346, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6249, - "src": "5428:7:26", + "referencedDeclaration": 6245, + "src": "5500:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6102,32 +6182,32 @@ ], "expression": { "argumentTypes": null, - "id": 6332, + "id": 6344, "name": "totalEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6299, - "src": "5409:14:26", + "referencedDeclaration": 6305, + "src": "5481:14:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 6333, + "id": 6345, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 7671, - "src": "5409:18:26", + "referencedDeclaration": 7593, + "src": "5481:18:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 6335, + "id": 6347, "isConstant": false, "isLValue": false, "isPure": false, @@ -6135,27 +6215,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5409:27:26", + "src": "5481:27:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 6336, + "id": 6348, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 7671, - "src": "5409:31:26", + "referencedDeclaration": 7593, + "src": "5481:31:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 6338, + "id": 6350, "isConstant": false, "isLValue": false, "isPure": false, @@ -6163,27 +6243,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5409:37:26", + "src": "5481:37:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 6339, + "id": 6351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 7671, - "src": "5409:41:26", + "referencedDeclaration": 7593, + "src": "5481:41:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 6341, + "id": 6353, "isConstant": false, "isLValue": false, "isPure": false, @@ -6191,7 +6271,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5409:55:26", + "src": "5481:55:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6211,32 +6291,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6325, + "id": 6337, "name": "epCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "5358:10:26", + "referencedDeclaration": 6255, + "src": "5430:10:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" } }, - "id": 6329, + "id": 6341, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "exitUserAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 5926, - "src": "5358:26:26", + "referencedDeclaration": 5936, + "src": "5430:26:26", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 6330, + "id": 6342, "isConstant": false, "isLValue": false, "isPure": false, @@ -6244,13 +6324,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "5358:31:26", + "src": "5430:31:26", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 6331, + "id": 6343, "isConstant": false, "isLValue": false, "isPure": false, @@ -6258,13 +6338,13 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "5358:37:26", + "src": "5430:37:26", "typeDescriptions": { "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 6342, + "id": 6354, "isConstant": false, "isLValue": false, "isPure": false, @@ -6272,13 +6352,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5358:116:26", + "src": "5430:116:26", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 6344, + "id": 6356, "isConstant": false, "isLValue": false, "isPure": false, @@ -6286,36 +6366,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5358:120:26", + "src": "5430:120:26", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, - "id": 6345, + "id": 6357, "nodeType": "ExpressionStatement", - "src": "5358:120:26" + "src": "5430:120:26" } ] }, "documentation": null, - "id": 6347, + "id": 6359, "implemented": true, "kind": "function", "modifiers": [], "name": "exitPositionsPostLoan", "nodeType": "FunctionDefinition", "parameters": { - "id": 6256, + "id": 6252, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6249, + "id": 6245, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 6347, - "src": "4409:15:26", + "scope": 6359, + "src": "4290:15:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6323,10 +6403,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6248, + "id": 6244, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4409:7:26", + "src": "4290:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6337,11 +6417,11 @@ }, { "constant": false, - "id": 6251, + "id": 6247, "name": "_fee", "nodeType": "VariableDeclaration", - "scope": 6347, - "src": "4434:12:26", + "scope": 6359, + "src": "4315:12:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6349,10 +6429,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6250, + "id": 6246, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4434:7:26", + "src": "4315:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6363,11 +6443,11 @@ }, { "constant": false, - "id": 6253, + "id": 6249, "name": "_protocolFee", "nodeType": "VariableDeclaration", - "scope": 6347, - "src": "4456:20:26", + "scope": 6359, + "src": "4337:20:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6375,10 +6455,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6252, + "id": 6248, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4456:7:26", + "src": "4337:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6389,11 +6469,11 @@ }, { "constant": false, - "id": 6255, + "id": 6251, "name": "_params", "nodeType": "VariableDeclaration", - "scope": 6347, - "src": "4486:22:26", + "scope": 6359, + "src": "4367:22:26", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -6401,10 +6481,10 @@ "typeString": "bytes" }, "typeName": { - "id": 6254, + "id": 6250, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4486:5:26", + "src": "4367:5:26", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6414,53 +6494,53 @@ "visibility": "internal" } ], - "src": "4399:115:26" + "src": "4280:115:26" }, "returnParameters": { - "id": 6257, + "id": 6253, "nodeType": "ParameterList", "parameters": [], - "src": "4524:0:26" + "src": "4405:0:26" }, - "scope": 6539, - "src": "4369:1116:26", + "scope": 6428, + "src": "4250:1307:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 6414, + "id": 6426, "nodeType": "Block", - "src": "5742:1063:26", + "src": "5814:1063:26", "statements": [ { "assignments": [ - 6361 + 6373 ], "declarations": [ { "constant": false, - "id": 6361, + "id": 6373, "name": "addressRegistry", "nodeType": "VariableDeclaration", - "scope": 6414, - "src": "5752:31:26", + "scope": 6426, + "src": "5824:31:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { "contractScope": null, - "id": 6360, + "id": 6372, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, - "src": "5752:15:26", + "referencedDeclaration": 7550, + "src": "5824:15:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -6468,18 +6548,18 @@ "visibility": "internal" } ], - "id": 6365, + "id": 6377, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6363, + "id": 6375, "name": "addressRegistryAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6355, - "src": "5815:22:26", + "referencedDeclaration": 6367, + "src": "5887:22:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6493,18 +6573,18 @@ "typeString": "address" } ], - "id": 6362, + "id": 6374, "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, - "src": "5786:15:26", + "referencedDeclaration": 7550, + "src": "5858:15:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, - "id": 6364, + "id": 6376, "isConstant": false, "isLValue": false, "isPure": false, @@ -6512,27 +6592,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5786:61:26", + "src": "5858:61:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, "nodeType": "VariableDeclarationStatement", - "src": "5752:95:26" + "src": "5824:95:26" }, { "assignments": [ - 6367 + 6379 ], "declarations": [ { "constant": false, - "id": 6367, + "id": 6379, "name": "addressAndExecuteOperationCalldataParams", "nodeType": "VariableDeclaration", - "scope": 6414, - "src": "5912:53:26", + "scope": 6426, + "src": "5984:53:26", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -6540,10 +6620,10 @@ "typeString": "bytes" }, "typeName": { - "id": 6366, + "id": 6378, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5912:5:26", + "src": "5984:5:26", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6553,7 +6633,7 @@ "visibility": "internal" } ], - "id": 6376, + "id": 6388, "initialValue": { "argumentTypes": null, "arguments": [ @@ -6562,12 +6642,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6372, + "id": 6384, "name": "dedgeExitManagerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6351, - "src": "6022:23:26", + "referencedDeclaration": 6363, + "src": "6094:23:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6583,18 +6663,18 @@ ], "expression": { "argumentTypes": null, - "id": 6370, + "id": 6382, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "6011:3:26", + "referencedDeclaration": 7814, + "src": "6083:3:26", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 6371, + "id": 6383, "isConstant": false, "isLValue": false, "isPure": true, @@ -6602,13 +6682,13 @@ "memberName": "encode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "6011:10:26", + "src": "6083:10:26", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 6373, + "id": 6385, "isConstant": false, "isLValue": false, "isPure": false, @@ -6616,7 +6696,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6011:35:26", + "src": "6083:35:26", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6624,12 +6704,12 @@ }, { "argumentTypes": null, - "id": 6374, + "id": 6386, "name": "executeOperationCalldataParams", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6357, - "src": "6060:30:26", + "referencedDeclaration": 6369, + "src": "6132:30:26", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -6649,18 +6729,18 @@ ], "expression": { "argumentTypes": null, - "id": 6368, + "id": 6380, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "5968:3:26", + "referencedDeclaration": 7814, + "src": "6040:3:26", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 6369, + "id": 6381, "isConstant": false, "isLValue": false, "isPure": true, @@ -6668,13 +6748,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "5968:29:26", + "src": "6040:29:26", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 6375, + "id": 6387, "isConstant": false, "isLValue": false, "isPure": false, @@ -6682,27 +6762,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5968:132:26", + "src": "6040:132:26", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5912:188:26" + "src": "5984:188:26" }, { "assignments": [ - 6378 + 6390 ], "declarations": [ { "constant": false, - "id": 6378, + "id": 6390, "name": "lendingPool", "nodeType": "VariableDeclaration", - "scope": 6414, - "src": "6111:24:26", + "scope": 6426, + "src": "6183:24:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6711,11 +6791,11 @@ }, "typeName": { "contractScope": null, - "id": 6377, + "id": 6389, "name": "ILendingPool", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 546, - "src": "6111:12:26", + "src": "6183:12:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", "typeString": "contract ILendingPool" @@ -6725,7 +6805,7 @@ "visibility": "internal" } ], - "id": 6388, + "id": 6400, "initialValue": { "argumentTypes": null, "arguments": [ @@ -6744,32 +6824,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6381, + "id": 6393, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6361, - "src": "6211:15:26", + "referencedDeclaration": 6373, + "src": "6283:15:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6382, + "id": 6394, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AaveLendingPoolAddressProviderAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7573, - "src": "6211:53:26", + "referencedDeclaration": 7495, + "src": "6283:53:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6383, + "id": 6395, "isConstant": false, "isLValue": false, "isPure": false, @@ -6777,7 +6857,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6211:55:26", + "src": "6283:55:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6791,18 +6871,18 @@ "typeString": "address" } ], - "id": 6380, + "id": 6392, "name": "ILendingPoolAddressesProvider", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 659, - "src": "6164:29:26", + "src": "6236:29:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILendingPoolAddressesProvider_$659_$", "typeString": "type(contract ILendingPoolAddressesProvider)" } }, - "id": 6384, + "id": 6396, "isConstant": false, "isLValue": false, "isPure": false, @@ -6810,13 +6890,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6164:116:26", + "src": "6236:116:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$659", "typeString": "contract ILendingPoolAddressesProvider" } }, - "id": 6385, + "id": 6397, "isConstant": false, "isLValue": false, "isPure": false, @@ -6824,13 +6904,13 @@ "memberName": "getLendingPool", "nodeType": "MemberAccess", "referencedDeclaration": 553, - "src": "6164:148:26", + "src": "6236:148:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6386, + "id": 6398, "isConstant": false, "isLValue": false, "isPure": false, @@ -6838,7 +6918,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6164:150:26", + "src": "6236:150:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6852,18 +6932,18 @@ "typeString": "address" } ], - "id": 6379, + "id": 6391, "name": "ILendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 546, - "src": "6138:12:26", + "src": "6210:12:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILendingPool_$546_$", "typeString": "type(contract ILendingPool)" } }, - "id": 6387, + "id": 6399, "isConstant": false, "isLValue": false, "isPure": false, @@ -6871,14 +6951,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6138:186:26", + "src": "6210:186:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", "typeString": "contract ILendingPool" } }, "nodeType": "VariableDeclarationStatement", - "src": "6111:213:26" + "src": "6183:213:26" }, { "expression": { @@ -6886,12 +6966,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6390, + "id": 6402, "name": "dacProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6353, - "src": "6398:15:26", + "referencedDeclaration": 6365, + "src": "6470:15:26", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -6902,12 +6982,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6392, + "id": 6404, "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6378, - "src": "6423:11:26", + "referencedDeclaration": 6390, + "src": "6495:11:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", "typeString": "contract ILendingPool" @@ -6921,20 +7001,20 @@ "typeString": "contract ILendingPool" } ], - "id": 6391, + "id": 6403, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6415:7:26", + "src": "6487:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 6393, + "id": 6405, "isConstant": false, "isLValue": false, "isPure": false, @@ -6942,7 +7022,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6415:20:26", + "src": "6487:20:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6960,18 +7040,18 @@ "typeString": "address" } ], - "id": 6389, + "id": 6401, "name": "_proxyGuardPermit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5976, - "src": "6380:17:26", + "referencedDeclaration": 5986, + "src": "6452:17:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", "typeString": "function (address payable,address)" } }, - "id": 6394, + "id": 6406, "isConstant": false, "isLValue": false, "isPure": false, @@ -6979,15 +7059,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6380:56:26", + "src": "6452:56:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6395, + "id": 6407, "nodeType": "ExpressionStatement", - "src": "6380:56:26" + "src": "6452:56:26" }, { "expression": { @@ -6995,12 +7075,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6399, + "id": 6411, "name": "dacProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6353, - "src": "6529:15:26", + "referencedDeclaration": 6365, + "src": "6601:15:26", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -7013,32 +7093,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6400, + "id": 6412, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6361, - "src": "6558:15:26", + "referencedDeclaration": 6373, + "src": "6630:15:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6401, + "id": 6413, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AaveEthAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7576, - "src": "6558:30:26", + "referencedDeclaration": 7498, + "src": "6630:30:26", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6402, + "id": 6414, "isConstant": false, "isLValue": false, "isPure": false, @@ -7046,7 +7126,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6558:32:26", + "src": "6630:32:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7054,12 +7134,12 @@ }, { "argumentTypes": null, - "id": 6403, + "id": 6415, "name": "totalEthDebtAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6349, - "src": "6604:18:26", + "referencedDeclaration": 6361, + "src": "6676:18:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7067,12 +7147,12 @@ }, { "argumentTypes": null, - "id": 6404, + "id": 6416, "name": "addressAndExecuteOperationCalldataParams", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6367, - "src": "6636:40:26", + "referencedDeclaration": 6379, + "src": "6708:40:26", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7100,18 +7180,18 @@ ], "expression": { "argumentTypes": null, - "id": 6396, + "id": 6408, "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6378, - "src": "6494:11:26", + "referencedDeclaration": 6390, + "src": "6566:11:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", "typeString": "contract ILendingPool" } }, - "id": 6398, + "id": 6410, "isConstant": false, "isLValue": false, "isPure": false, @@ -7119,13 +7199,13 @@ "memberName": "flashLoan", "nodeType": "MemberAccess", "referencedDeclaration": 442, - "src": "6494:21:26", + "src": "6566:21:26", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory) external" } }, - "id": 6405, + "id": 6417, "isConstant": false, "isLValue": false, "isPure": false, @@ -7133,15 +7213,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6494:192:26", + "src": "6566:192:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6406, + "id": 6418, "nodeType": "ExpressionStatement", - "src": "6494:192:26" + "src": "6566:192:26" }, { "expression": { @@ -7149,12 +7229,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6408, + "id": 6420, "name": "dacProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6353, - "src": "6760:15:26", + "referencedDeclaration": 6365, + "src": "6832:15:26", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -7165,12 +7245,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6410, + "id": 6422, "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6378, - "src": "6785:11:26", + "referencedDeclaration": 6390, + "src": "6857:11:26", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", "typeString": "contract ILendingPool" @@ -7184,20 +7264,20 @@ "typeString": "contract ILendingPool" } ], - "id": 6409, + "id": 6421, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6777:7:26", + "src": "6849:7:26", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 6411, + "id": 6423, "isConstant": false, "isLValue": false, "isPure": false, @@ -7205,7 +7285,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6777:20:26", + "src": "6849:20:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7223,18 +7303,18 @@ "typeString": "address" } ], - "id": 6407, + "id": 6419, "name": "_proxyGuardForbid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6017, - "src": "6742:17:26", + "referencedDeclaration": 6027, + "src": "6814:17:26", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", "typeString": "function (address payable,address)" } }, - "id": 6412, + "id": 6424, "isConstant": false, "isLValue": false, "isPure": false, @@ -7242,36 +7322,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6742:56:26", + "src": "6814:56:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6413, + "id": 6425, "nodeType": "ExpressionStatement", - "src": "6742:56:26" + "src": "6814:56:26" } ] }, "documentation": null, - "id": 6415, + "id": 6427, "implemented": true, "kind": "function", "modifiers": [], "name": "exitPositions", "nodeType": "FunctionDefinition", "parameters": { - "id": 6358, + "id": 6370, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6349, + "id": 6361, "name": "totalEthDebtAmount", "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5523:26:26", + "scope": 6427, + "src": "5595:26:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7279,10 +7359,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6348, + "id": 6360, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5523:7:26", + "src": "5595:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7293,11 +7373,11 @@ }, { "constant": false, - "id": 6351, + "id": 6363, "name": "dedgeExitManagerAddress", "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5559:31:26", + "scope": 6427, + "src": "5631:31:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7305,10 +7385,10 @@ "typeString": "address" }, "typeName": { - "id": 6350, + "id": 6362, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5559:7:26", + "src": "5631:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7320,11 +7400,11 @@ }, { "constant": false, - "id": 6353, + "id": 6365, "name": "dacProxyAddress", "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5600:31:26", + "scope": 6427, + "src": "5672:31:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7332,10 +7412,10 @@ "typeString": "address payable" }, "typeName": { - "id": 6352, + "id": 6364, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5600:15:26", + "src": "5672:15:26", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -7347,11 +7427,11 @@ }, { "constant": false, - "id": 6355, + "id": 6367, "name": "addressRegistryAddress", "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5641:30:26", + "scope": 6427, + "src": "5713:30:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7359,10 +7439,10 @@ "typeString": "address" }, "typeName": { - "id": 6354, + "id": 6366, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5641:7:26", + "src": "5713:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7374,11 +7454,11 @@ }, { "constant": false, - "id": 6357, + "id": 6369, "name": "executeOperationCalldataParams", "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5681:45:26", + "scope": 6427, + "src": "5753:45:26", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -7386,10 +7466,10 @@ "typeString": "bytes" }, "typeName": { - "id": 6356, + "id": 6368, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5681:5:26", + "src": "5753:5:26", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7399,148 +7479,623 @@ "visibility": "internal" } ], - "src": "5513:219:26" + "src": "5585:219:26" }, "returnParameters": { - "id": 6359, + "id": 6371, "nodeType": "ParameterList", "parameters": [], - "src": "5742:0:26" + "src": "5814:0:26" }, - "scope": 6539, - "src": "5491:1314:26", + "scope": 6428, + "src": "5563:1314:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" + } + ], + "scope": 6429, + "src": "690:6189:26" + } + ], + "src": "65:6815:26" + }, + "legacyAST": { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol", + "exportedSymbols": { + "DedgeExitManager": [ + 6428 + ] + }, + "id": 6429, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5898, + "literals": [ + "solidity", + "0.5", + ".16" + ], + "nodeType": "PragmaDirective", + "src": "65:23:26" + }, + { + "id": 5899, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "89:33:26" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol", + "file": "../interfaces/IERC20.sol", + "id": 5900, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 121, + "src": "124:34:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol", + "file": "../interfaces/compound/IComptroller.sol", + "id": 5901, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 1097, + "src": "160:49:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol", + "file": "../interfaces/compound/ICEther.sol", + "id": 5902, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 733, + "src": "210:44:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol", + "file": "../interfaces/compound/ICToken.sol", + "id": 5903, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 859, + "src": "255:44:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol", + "file": "../interfaces/aave/ILendingPoolAddressesProvider.sol", + "id": 5904, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 660, + "src": "301:62:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol", + "file": "../interfaces/aave/ILendingPool.sol", + "id": 5905, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 547, + "src": "364:45:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol", + "file": "../interfaces/aave/ILendingPoolParametersProvider.sol", + "id": 5906, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 670, + "src": "410:63:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol", + "file": "../lib/uniswap/UniswapLiteBase.sol", + "id": 5907, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 5195, + "src": "475:44:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol", + "file": "../lib/dapphub/Guard.sol", + "id": 5908, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 3196, + "src": "520:34:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol", + "file": "../registries/AddressRegistry.sol", + "id": 5909, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 7551, + "src": "556:43:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", + "file": "../proxies/DACProxy.sol", + "id": 5910, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 7245, + "src": "601:33:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "@openzeppelin/contracts/math/SafeMath.sol", + "id": 5911, + "nodeType": "ImportDirective", + "scope": 6429, + "sourceUnit": 7738, + "src": "636:51:26", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5912, + "name": "UniswapLiteBase", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5194, + "src": "719:15:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UniswapLiteBase_$5194", + "typeString": "contract UniswapLiteBase" + } + }, + "id": 5913, + "nodeType": "InheritanceSpecifier", + "src": "719:15:26" + } + ], + "contractDependencies": [ + 5194 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 6428, + "linearizedBaseContracts": [ + 6428, + 5194 + ], + "name": "DedgeExitManager", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5916, + "libraryName": { + "contractScope": null, + "id": 5914, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7737, + "src": "747:8:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$7737", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "741:27:26", + "typeName": { + "id": 5915, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "760:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } }, { "body": { - "id": 6537, + "id": 5919, + "nodeType": "Block", + "src": "802:2:26", + "statements": [] + }, + "documentation": null, + "id": 5920, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5917, + "nodeType": "ParameterList", + "parameters": [], + "src": "782:2:26" + }, + "returnParameters": { + "id": 5918, + "nodeType": "ParameterList", + "parameters": [], + "src": "802:0:26" + }, + "scope": 6428, + "src": "774:30:26", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 5923, + "nodeType": "Block", + "src": "831:2:26", + "statements": [] + }, + "documentation": null, + "id": 5924, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5921, + "nodeType": "ParameterList", + "parameters": [], + "src": "821:2:26" + }, + "returnParameters": { + "id": 5922, + "nodeType": "ParameterList", + "parameters": [], + "src": "831:0:26" + }, + "scope": 6428, + "src": "810:23:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "canonicalName": "DedgeExitManager.DebtMarket", + "id": 5929, + "members": [ + { + "constant": false, + "id": 5926, + "name": "cToken", + "nodeType": "VariableDeclaration", + "scope": 5929, + "src": "867:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5925, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "867:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5928, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5929, + "src": "891:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5927, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "891:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DebtMarket", + "nodeType": "StructDefinition", + "scope": 6428, + "src": "839:73:26", + "visibility": "public" + }, + { + "canonicalName": "DedgeExitManager.CollateralMarket", + "id": 5934, + "members": [ + { + "constant": false, + "id": 5931, + "name": "cToken", + "nodeType": "VariableDeclaration", + "scope": 5934, + "src": "952:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5930, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "952:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5933, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5934, + "src": "976:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5932, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "976:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "CollateralMarket", + "nodeType": "StructDefinition", + "scope": 6428, + "src": "918:79:26", + "visibility": "public" + }, + { + "canonicalName": "DedgeExitManager.ExitPositionCalldata", + "id": 5945, + "members": [ + { + "constant": false, + "id": 5936, + "name": "exitUserAddress", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "1041:31:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5935, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1041:15:26", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5938, + "name": "addressRegistryAddress", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "1082:30:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5937, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1082:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5941, + "name": "debtMarket", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "1122:23:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_storage_$dyn_storage_ptr", + "typeString": "struct DedgeExitManager.DebtMarket[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 5939, + "name": "DebtMarket", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5929, + "src": "1122:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DebtMarket_$5929_storage_ptr", + "typeString": "struct DedgeExitManager.DebtMarket" + } + }, + "id": 5940, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1122:12:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_storage_$dyn_storage_ptr", + "typeString": "struct DedgeExitManager.DebtMarket[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5944, + "name": "collateralMarket", + "nodeType": "VariableDeclaration", + "scope": 5945, + "src": "1155:35:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_storage_$dyn_storage_ptr", + "typeString": "struct DedgeExitManager.CollateralMarket[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 5942, + "name": "CollateralMarket", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5934, + "src": "1155:16:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CollateralMarket_$5934_storage_ptr", + "typeString": "struct DedgeExitManager.CollateralMarket" + } + }, + "id": 5943, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1155:18:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_storage_$dyn_storage_ptr", + "typeString": "struct DedgeExitManager.CollateralMarket[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "ExitPositionCalldata", + "nodeType": "StructDefinition", + "scope": 6428, + "src": "1003:194:26", + "visibility": "public" + }, + { + "body": { + "id": 5985, "nodeType": "Block", - "src": "7072:988:26", + "src": "1294:214:26", "statements": [ { "assignments": [ - 6431 + 5953 ], "declarations": [ { "constant": false, - "id": 6431, - "name": "addressRegistry", + "id": 5953, + "name": "g", "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7082:31:26", + "scope": 5985, + "src": "1304:9:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "contractScope": null, - "id": 6430, - "name": "AddressRegistry", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, - "src": "7082:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6435, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6433, - "name": "addressRegistryAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6417, - "src": "7145:22:26", + "id": 5952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1304:7:26", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6432, - "name": "AddressRegistry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7628, - "src": "7116:15:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", - "typeString": "type(contract AddressRegistry)" - } - }, - "id": 6434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7116:61:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7082:95:26" - }, - { - "assignments": [ - 6437 - ], - "declarations": [ - { - "constant": false, - "id": 6437, - "name": "comptroller", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7188:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IComptroller_$1096", - "typeString": "contract IComptroller" - }, - "typeName": { - "contractScope": null, - "id": 6436, - "name": "IComptroller", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1096, - "src": "7188:12:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IComptroller_$1096", - "typeString": "contract IComptroller" - } }, "value": null, "visibility": "internal" } ], - "id": 6443, + "id": 5961, "initialValue": { "argumentTypes": null, "arguments": [ @@ -7551,32 +8106,68 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6439, - "name": "addressRegistry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6431, - "src": "7228:15:26", + "arguments": [ + { + "argumentTypes": null, + "id": 5956, + "name": "proxyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5947, + "src": "1333:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 5955, + "name": "DACProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7244, + "src": "1324:8:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", + "typeString": "type(contract DACProxy)" + } + }, + "id": 5957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1324:22:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" + "typeIdentifier": "t_contract$_DACProxy_$7244", + "typeString": "contract DACProxy" } }, - "id": 6440, + "id": 5958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "CompoundComptrollerAddress", + "memberName": "authority", "nodeType": "MemberAccess", - "referencedDeclaration": 7585, - "src": "7228:42:26", + "referencedDeclaration": 2812, + "src": "1324:32:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DSAuthority_$2799_$", + "typeString": "function () view external returns (contract DSAuthority)" } }, - "id": 6441, + "id": 5959, "isConstant": false, "isLValue": false, "isPure": false, @@ -7584,32 +8175,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7228:44:26", + "src": "1324:34:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_DSAuthority_$2799", + "typeString": "contract DSAuthority" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_DSAuthority_$2799", + "typeString": "contract DSAuthority" } ], - "id": 6438, - "name": "IComptroller", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1096, - "src": "7215:12:26", + "id": 5954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1316:7:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IComptroller_$1096_$", - "typeString": "type(contract IComptroller)" - } + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" }, - "id": 6442, + "id": 5960, "isConstant": false, "isLValue": false, "isPure": false, @@ -7617,449 +8210,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7215:58:26", + "src": "1316:43:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_IComptroller_$1096", - "typeString": "contract IComptroller" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "7188:85:26" + "src": "1304:55:26" }, { - "assignments": [ - 6447 - ], - "declarations": [ - { - "constant": false, - "id": 6447, - "name": "marketsEntered", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7284:31:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 6445, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7284:7:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6446, - "length": null, - "nodeType": "ArrayTypeName", - "src": "7284:9:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6452, - "initialValue": { + "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6450, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6419, - "src": "7342:5:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 6448, - "name": "comptroller", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6437, - "src": "7318:11:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IComptroller_$1096", - "typeString": "contract IComptroller" - } - }, - "id": 6449, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAssetsIn", - "nodeType": "MemberAccess", - "referencedDeclaration": 910, - "src": "7318:23:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$", - "typeString": "function (address) view external returns (address[] memory)" - } - }, - "id": 6451, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7318:30:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7284:64:26" - }, - { - "assignments": [ - 6454 - ], - "declarations": [ - { - "constant": false, - "id": 6454, - "name": "curMarket", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7359:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6453, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7359:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6455, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7359:17:26" - }, - { - "assignments": [ - 6457 - ], - "declarations": [ - { - "constant": false, - "id": 6457, - "name": "curCollateral", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7386:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6456, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7386:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6458, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7386:18:26" - }, - { - "assignments": [ - 6460 - ], - "declarations": [ - { - "constant": false, - "id": 6460, - "name": "curCollateralI", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7414:19:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6459, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7414:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6461, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7414:19:26" - }, - { - "assignments": [ - 6463 - ], - "declarations": [ - { - "constant": false, - "id": 6463, - "name": "curDebt", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7443:12:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6462, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7443:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6464, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7443:12:26" - }, - { - "assignments": [ - 6466 - ], - "declarations": [ - { - "constant": false, - "id": 6466, - "name": "curDebtI", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7465:13:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6465, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7465:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6467, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7465:13:26" - }, - { - "body": { - "id": 6535, - "nodeType": "Block", - "src": "7538:516:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 6483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6479, - "name": "curMarket", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7552:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6480, - "name": "marketsEntered", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6447, - "src": "7564:14:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6482, - "indexExpression": { - "argumentTypes": null, - "id": 6481, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6469, - "src": "7579:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7564:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7552:29:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6484, - "nodeType": "ExpressionStatement", - "src": "7552:29:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 6492, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6485, - "name": "curDebt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6463, - "src": "7595:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { + "arguments": [ + { "argumentTypes": null, "arguments": [ { - "argumentTypes": null, - "id": 6490, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6419, - "src": "7645:5:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6487, - "name": "curMarket", + "id": 5969, + "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7613:9:26", + "referencedDeclaration": 5949, + "src": "1425:3:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8073,18 +8253,20 @@ "typeString": "address" } ], - "id": 6486, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "7605:7:26", + "id": 5968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1417:7:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" }, - "id": 6488, + "id": 5970, "isConstant": false, "isLValue": false, "isPure": false, @@ -8092,87 +8274,101 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7605:18:26", + "src": "1417:12:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 6489, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5967, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, "lValueRequested": false, - "memberName": "borrowBalanceCurrent", - "nodeType": "MemberAccess", - "referencedDeclaration": 790, - "src": "7605:39:26", + "nodeType": "ElementaryTypeNameExpression", + "src": "1409:7:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": "bytes20" }, - "id": 6491, + "id": 5971, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7605:46:26", + "src": "1409:21:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" } - }, - "src": "7595:56:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } - }, - "id": 6493, - "nodeType": "ExpressionStatement", - "src": "7595:56:26" - }, - { + ], "expression": { - "argumentTypes": null, - "id": 6501, + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 5966, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6494, - "name": "curCollateral", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6457, - "src": "7665:13:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "ElementaryTypeNameExpression", + "src": "1401:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6499, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6419, - "src": "7720:5:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeName": "bytes32" + }, + "id": 5972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1401:30:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5974, + "name": "g", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5953, + "src": "1453:1:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], @@ -8183,669 +8379,273 @@ "typeString": "address" } ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6496, - "name": "curMarket", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7689:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6495, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "7681:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7681:18:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOfUnderlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 804, - "src": "7681:38:26", + "id": 5973, + "name": "DSGuard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3163, + "src": "1445:7:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", + "typeString": "type(contract DSGuard)" } }, - "id": 6500, + "id": 5975, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7681:45:26", + "src": "1445:10:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_contract$_DSGuard_$3163", + "typeString": "contract DSGuard" } }, - "src": "7665:61:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6502, - "nodeType": "ExpressionStatement", - "src": "7665:61:26" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6505, + "id": 5976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6503, - "name": "curCollateral", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6457, - "src": "7745:13:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 6504, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7761:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7745:17:26", + "memberName": "ANY", + "nodeType": "MemberAccess", + "referencedDeclaration": 2958, + "src": "1445:14:26", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" } }, - "falseBody": null, - "id": 6516, - "nodeType": "IfStatement", - "src": "7741:135:26", - "trueBody": { - "id": 6515, - "nodeType": "Block", - "src": "7764:112:26", - "statements": [ - { - "expression": { + "id": 5977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1445:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "id": 6510, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6506, - "name": "collateralAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6428, - "src": "7782:17:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6508, - "indexExpression": { - "argumentTypes": null, - "id": 6507, - "name": "curCollateralI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6460, - "src": "7800:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7782:33:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 6509, - "name": "curMarket", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7818:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7782:45:26", + "id": 5979, + "name": "g", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5953, + "src": "1483:1:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } - }, - "id": 6511, - "nodeType": "ExpressionStatement", - "src": "7782:45:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 6513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "7845:16:26", - "subExpression": { - "argumentTypes": null, - "id": 6512, - "name": "curCollateralI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6460, - "src": "7845:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 6514, - "nodeType": "ExpressionStatement", - "src": "7845:16:26" + ], + "id": 5978, + "name": "DSGuard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3163, + "src": "1475:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", + "typeString": "type(contract DSGuard)" + } + }, + "id": 5980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1475:10:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DSGuard_$3163", + "typeString": "contract DSGuard" } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" }, - "id": 6519, + "id": 5981, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6517, - "name": "curDebt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6463, - "src": "7894:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 6518, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7904:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7894:11:26", + "memberName": "ANY", + "nodeType": "MemberAccess", + "referencedDeclaration": 2958, + "src": "1475:14:26", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } }, - "falseBody": null, - "id": 6534, - "nodeType": "IfStatement", - "src": "7890:154:26", - "trueBody": { - "id": 6533, - "nodeType": "Block", - "src": "7907:137:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 6524, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6520, - "name": "debtAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6425, - "src": "7925:11:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6522, - "indexExpression": { - "argumentTypes": null, - "id": 6521, - "name": "curDebtI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6466, - "src": "7937:8:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7925:21:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 6523, - "name": "curMarket", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7949:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7925:33:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6525, - "nodeType": "ExpressionStatement", - "src": "7925:33:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 6527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "7976:10:26", - "subExpression": { - "argumentTypes": null, - "id": 6526, - "name": "curDebtI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6466, - "src": "7976:8:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6528, - "nodeType": "ExpressionStatement", - "src": "7976:10:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 6531, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6529, - "name": "ethDebtAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6422, - "src": "8005:13:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "id": 6530, - "name": "curDebt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6463, - "src": "8022:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8005:24:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6532, - "nodeType": "ExpressionStatement", - "src": "8005:24:26" - } - ] + "id": 5982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1475:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6475, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6472, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6469, - "src": "7506:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], "expression": { "argumentTypes": null, - "id": 6473, - "name": "marketsEntered", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6447, - "src": "7510:14:26", + "arguments": [ + { + "argumentTypes": null, + "id": 5963, + "name": "g", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5953, + "src": "1378:1:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5962, + "name": "DSGuard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3163, + "src": "1370:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", + "typeString": "type(contract DSGuard)" + } + }, + "id": 5964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1370:10:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "typeIdentifier": "t_contract$_DSGuard_$3163", + "typeString": "contract DSGuard" } }, - "id": 6474, + "id": 5965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "length", + "memberName": "permit", "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7510:21:26", + "referencedDeclaration": 3086, + "src": "1370:17:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32) external" } }, - "src": "7506:25:26", + "id": 5983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1370:131:26", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 6536, - "initializationExpression": { - "assignments": [ - 6469 - ], - "declarations": [ - { - "constant": false, - "id": 6469, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 6536, - "src": "7494:6:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6468, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7494:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6471, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 6470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7503:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "7494:10:26" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 6477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "7533:3:26", - "subExpression": { - "argumentTypes": null, - "id": 6476, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6469, - "src": "7533:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6478, - "nodeType": "ExpressionStatement", - "src": "7533:3:26" - }, - "nodeType": "ForStatement", - "src": "7489:565:26" + "id": 5984, + "nodeType": "ExpressionStatement", + "src": "1370:131:26" } ] }, "documentation": null, - "id": 6538, + "id": 5986, "implemented": true, "kind": "function", "modifiers": [], - "name": "getExitPositionsData", + "name": "_proxyGuardPermit", "nodeType": "FunctionDefinition", "parameters": { - "id": 6420, + "id": 5950, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6417, - "name": "addressRegistryAddress", + "id": 5947, + "name": "proxyAddress", "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "6841:30:26", + "scope": 5986, + "src": "1230:28:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, "typeName": { - "id": 6416, + "id": 5946, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6841:7:26", - "stateMutability": "nonpayable", + "src": "1230:15:26", + "stateMutability": "payable", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "value": null, @@ -8853,11 +8653,11 @@ }, { "constant": false, - "id": 6419, - "name": "owner", + "id": 5949, + "name": "src", "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "6873:13:26", + "scope": 5986, + "src": "1260:11:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8865,10 +8665,10 @@ "typeString": "address" }, "typeName": { - "id": 6418, + "id": 5948, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6873:7:26", + "src": "1260:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8879,3822 +8679,492 @@ "visibility": "internal" } ], - "src": "6840:47:26" + "src": "1229:43:26" }, "returnParameters": { - "id": 6429, + "id": 5951, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6422, - "name": "ethDebtAmount", - "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "6946:21:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6946:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, + "parameters": [], + "src": "1294:0:26" + }, + "scope": 6428, + "src": "1203:305:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6026, + "nodeType": "Block", + "src": "1605:214:26", + "statements": [ { - "constant": false, - "id": 6425, - "name": "debtAddress", - "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "6981:28:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 6423, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6981:7:26", - "stateMutability": "nonpayable", + "assignments": [ + 5994 + ], + "declarations": [ + { + "constant": false, + "id": 5994, + "name": "g", + "nodeType": "VariableDeclaration", + "scope": 6026, + "src": "1615:9:26", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" + }, + "typeName": { + "id": 5993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1615:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6002, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5997, + "name": "proxyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5988, + "src": "1644:12:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 5996, + "name": "DACProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7244, + "src": "1635:8:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", + "typeString": "type(contract DACProxy)" + } + }, + "id": 5998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1635:22:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DACProxy_$7244", + "typeString": "contract DACProxy" + } + }, + "id": 5999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "authority", + "nodeType": "MemberAccess", + "referencedDeclaration": 2812, + "src": "1635:32:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DSAuthority_$2799_$", + "typeString": "function () view external returns (contract DSAuthority)" + } + }, + "id": 6000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1635:34:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DSAuthority_$2799", + "typeString": "contract DSAuthority" + } } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DSAuthority_$2799", + "typeString": "contract DSAuthority" + } + ], + "id": 5995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1627:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" }, - "id": 6424, - "length": null, - "nodeType": "ArrayTypeName", - "src": "6981:9:26", + "id": 6001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1627:43:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "value": null, - "visibility": "internal" + "nodeType": "VariableDeclarationStatement", + "src": "1615:55:26" }, { - "constant": false, - "id": 6428, - "name": "collateralAddress", - "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "7023:34:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 6426, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7023:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6427, - "length": null, - "nodeType": "ArrayTypeName", - "src": "7023:9:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6932:135:26" - }, - "scope": 6539, - "src": "6811:1249:26", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 6540, - "src": "690:7372:26" - } - ], - "src": "65:7998:26" - }, - "legacyAST": { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol", - "exportedSymbols": { - "DedgeExitManager": [ - 6539 - ] - }, - "id": 6540, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 5898, - "literals": [ - "solidity", - "0.5", - ".16" - ], - "nodeType": "PragmaDirective", - "src": "65:23:26" - }, - { - "id": 5899, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "89:33:26" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol", - "file": "../interfaces/IERC20.sol", - "id": 5900, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 121, - "src": "124:34:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol", - "file": "../interfaces/compound/IComptroller.sol", - "id": 5901, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 1097, - "src": "160:49:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol", - "file": "../interfaces/compound/ICEther.sol", - "id": 5902, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 733, - "src": "210:44:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol", - "file": "../interfaces/compound/ICToken.sol", - "id": 5903, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 859, - "src": "255:44:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol", - "file": "../interfaces/aave/ILendingPoolAddressesProvider.sol", - "id": 5904, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 660, - "src": "301:62:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol", - "file": "../interfaces/aave/ILendingPool.sol", - "id": 5905, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 547, - "src": "364:45:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol", - "file": "../interfaces/aave/ILendingPoolParametersProvider.sol", - "id": 5906, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 670, - "src": "410:63:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol", - "file": "../lib/uniswap/UniswapLiteBase.sol", - "id": 5907, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 5195, - "src": "475:44:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol", - "file": "../lib/dapphub/Guard.sol", - "id": 5908, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 3196, - "src": "520:34:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol", - "file": "../registries/AddressRegistry.sol", - "id": 5909, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 7629, - "src": "556:43:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", - "file": "../proxies/DACProxy.sol", - "id": 5910, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 7323, - "src": "601:33:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", - "file": "@openzeppelin/contracts/math/SafeMath.sol", - "id": 5911, - "nodeType": "ImportDirective", - "scope": 6540, - "sourceUnit": 7816, - "src": "636:51:26", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 5912, - "name": "UniswapLiteBase", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5194, - "src": "719:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapLiteBase_$5194", - "typeString": "contract UniswapLiteBase" - } - }, - "id": 5913, - "nodeType": "InheritanceSpecifier", - "src": "719:15:26" - } - ], - "contractDependencies": [ - 5194 - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 6539, - "linearizedBaseContracts": [ - 6539, - 5194 - ], - "name": "DedgeExitManager", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 5916, - "libraryName": { - "contractScope": null, - "id": 5914, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7815, - "src": "747:8:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$7815", - "typeString": "library SafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "741:27:26", - "typeName": { - "id": 5915, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "760:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "body": { - "id": 5919, - "nodeType": "Block", - "src": "802:2:26", - "statements": [] - }, - "documentation": null, - "id": 5920, - "implemented": true, - "kind": "fallback", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5917, - "nodeType": "ParameterList", - "parameters": [], - "src": "782:2:26" - }, - "returnParameters": { - "id": 5918, - "nodeType": "ParameterList", - "parameters": [], - "src": "802:0:26" - }, - "scope": 6539, - "src": "774:30:26", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - }, - { - "body": { - "id": 5923, - "nodeType": "Block", - "src": "831:2:26", - "statements": [] - }, - "documentation": null, - "id": 5924, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5921, - "nodeType": "ParameterList", - "parameters": [], - "src": "821:2:26" - }, - "returnParameters": { - "id": 5922, - "nodeType": "ParameterList", - "parameters": [], - "src": "831:0:26" - }, - "scope": 6539, - "src": "810:23:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "canonicalName": "DedgeExitManager.ExitPositionCalldata", - "id": 5935, - "members": [ - { - "constant": false, - "id": 5926, - "name": "exitUserAddress", - "nodeType": "VariableDeclaration", - "scope": 5935, - "src": "877:31:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 5925, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "877:15:26", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5928, - "name": "addressRegistryAddress", - "nodeType": "VariableDeclaration", - "scope": 5935, - "src": "918:30:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5927, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "918:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5931, - "name": "debtCTokens", - "nodeType": "VariableDeclaration", - "scope": 5935, - "src": "958:21:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 5929, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "958:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5930, - "length": null, - "nodeType": "ArrayTypeName", - "src": "958:9:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5934, - "name": "collateralCTokens", - "nodeType": "VariableDeclaration", - "scope": 5935, - "src": "989:27:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 5932, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "989:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5933, - "length": null, - "nodeType": "ArrayTypeName", - "src": "989:9:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "ExitPositionCalldata", - "nodeType": "StructDefinition", - "scope": 6539, - "src": "839:184:26", - "visibility": "public" - }, - { - "body": { - "id": 5975, - "nodeType": "Block", - "src": "1120:214:26", - "statements": [ - { - "assignments": [ - 5943 - ], - "declarations": [ - { - "constant": false, - "id": 5943, - "name": "g", - "nodeType": "VariableDeclaration", - "scope": 5975, - "src": "1130:9:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5942, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1130:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 5951, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5946, - "name": "proxyAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5937, - "src": "1159:12:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 5945, - "name": "DACProxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7322, - "src": "1150:8:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", - "typeString": "type(contract DACProxy)" - } - }, - "id": 5947, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1150:22:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", - "typeString": "contract DACProxy" - } - }, - "id": 5948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "authority", - "nodeType": "MemberAccess", - "referencedDeclaration": 2812, - "src": "1150:32:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DSAuthority_$2799_$", - "typeString": "function () view external returns (contract DSAuthority)" - } - }, - "id": 5949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1150:34:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DSAuthority_$2799", - "typeString": "contract DSAuthority" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DSAuthority_$2799", - "typeString": "contract DSAuthority" - } - ], - "id": 5944, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1142:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 5950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1142:43:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1130:55:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5959, - "name": "src", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5939, - "src": "1251:3:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5958, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1243:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 5960, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1243:12:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5957, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1235:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes20_$", - "typeString": "type(bytes20)" - }, - "typeName": "bytes20" - }, - "id": 5961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1235:21:26", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "id": 5956, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1227:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": "bytes32" - }, - "id": 5962, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1227:30:26", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5964, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5943, - "src": "1279:1:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5963, - "name": "DSGuard", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3163, - "src": "1271:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", - "typeString": "type(contract DSGuard)" - } - }, - "id": 5965, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1271:10:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DSGuard_$3163", - "typeString": "contract DSGuard" - } - }, - "id": 5966, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "ANY", - "nodeType": "MemberAccess", - "referencedDeclaration": 2958, - "src": "1271:14:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", - "typeString": "function () view external returns (bytes32)" - } - }, - "id": 5967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1271:16:26", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5969, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5943, - "src": "1309:1:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5968, - "name": "DSGuard", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3163, - "src": "1301:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", - "typeString": "type(contract DSGuard)" - } - }, - "id": 5970, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1301:10:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DSGuard_$3163", - "typeString": "contract DSGuard" - } - }, - "id": 5971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "ANY", - "nodeType": "MemberAccess", - "referencedDeclaration": 2958, - "src": "1301:14:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", - "typeString": "function () view external returns (bytes32)" - } - }, - "id": 5972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1301:16:26", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5953, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5943, - "src": "1204:1:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5952, - "name": "DSGuard", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3163, - "src": "1196:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", - "typeString": "type(contract DSGuard)" - } - }, - "id": 5954, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1196:10:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DSGuard_$3163", - "typeString": "contract DSGuard" - } - }, - "id": 5955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "permit", - "nodeType": "MemberAccess", - "referencedDeclaration": 3086, - "src": "1196:17:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32,bytes32) external" - } - }, - "id": 5973, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1196:131:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5974, - "nodeType": "ExpressionStatement", - "src": "1196:131:26" - } - ] - }, - "documentation": null, - "id": 5976, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_proxyGuardPermit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5940, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5937, - "name": "proxyAddress", - "nodeType": "VariableDeclaration", - "scope": 5976, - "src": "1056:28:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 5936, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1056:15:26", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5939, - "name": "src", - "nodeType": "VariableDeclaration", - "scope": 5976, - "src": "1086:11:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5938, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1086:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1055:43:26" - }, - "returnParameters": { - "id": 5941, - "nodeType": "ParameterList", - "parameters": [], - "src": "1120:0:26" - }, - "scope": 6539, - "src": "1029:305:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 6016, - "nodeType": "Block", - "src": "1431:214:26", - "statements": [ - { - "assignments": [ - 5984 - ], - "declarations": [ - { - "constant": false, - "id": 5984, - "name": "g", - "nodeType": "VariableDeclaration", - "scope": 6016, - "src": "1441:9:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5983, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1441:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 5992, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5987, - "name": "proxyAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5978, - "src": "1470:12:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 5986, - "name": "DACProxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7322, - "src": "1461:8:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", - "typeString": "type(contract DACProxy)" - } - }, - "id": 5988, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1461:22:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", - "typeString": "contract DACProxy" - } - }, - "id": 5989, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "authority", - "nodeType": "MemberAccess", - "referencedDeclaration": 2812, - "src": "1461:32:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_DSAuthority_$2799_$", - "typeString": "function () view external returns (contract DSAuthority)" - } - }, - "id": 5990, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1461:34:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DSAuthority_$2799", - "typeString": "contract DSAuthority" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DSAuthority_$2799", - "typeString": "contract DSAuthority" - } - ], - "id": 5985, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1453:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 5991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1453:43:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1441:55:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6000, - "name": "src", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5980, - "src": "1562:3:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5999, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1554:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 6001, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1554:12:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5998, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1546:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes20_$", - "typeString": "type(bytes20)" - }, - "typeName": "bytes20" - }, - "id": 6002, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1546:21:26", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "id": 5997, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1538:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": "bytes32" - }, - "id": 6003, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1538:30:26", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6005, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5984, - "src": "1590:1:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6004, - "name": "DSGuard", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3163, - "src": "1582:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", - "typeString": "type(contract DSGuard)" - } - }, - "id": 6006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1582:10:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DSGuard_$3163", - "typeString": "contract DSGuard" - } - }, - "id": 6007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "ANY", - "nodeType": "MemberAccess", - "referencedDeclaration": 2958, - "src": "1582:14:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", - "typeString": "function () view external returns (bytes32)" - } - }, - "id": 6008, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1582:16:26", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6010, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5984, - "src": "1620:1:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6009, - "name": "DSGuard", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3163, - "src": "1612:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", - "typeString": "type(contract DSGuard)" - } - }, - "id": 6011, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1612:10:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DSGuard_$3163", - "typeString": "contract DSGuard" - } - }, - "id": 6012, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "ANY", - "nodeType": "MemberAccess", - "referencedDeclaration": 2958, - "src": "1612:14:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", - "typeString": "function () view external returns (bytes32)" - } - }, - "id": 6013, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1612:16:26", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5994, - "name": "g", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5984, - "src": "1515:1:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5993, - "name": "DSGuard", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3163, - "src": "1507:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", - "typeString": "type(contract DSGuard)" - } - }, - "id": 5995, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1507:10:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DSGuard_$3163", - "typeString": "contract DSGuard" - } - }, - "id": 5996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "forbid", - "nodeType": "MemberAccess", - "referencedDeclaration": 3114, - "src": "1507:17:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32,bytes32) external" - } - }, - "id": 6014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1507:131:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6015, - "nodeType": "ExpressionStatement", - "src": "1507:131:26" - } - ] - }, - "documentation": null, - "id": 6017, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_proxyGuardForbid", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5981, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5978, - "name": "proxyAddress", - "nodeType": "VariableDeclaration", - "scope": 6017, - "src": "1367:28:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 5977, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1367:15:26", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5980, - "name": "src", - "nodeType": "VariableDeclaration", - "scope": 6017, - "src": "1397:11:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5979, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1397:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1366:43:26" - }, - "returnParameters": { - "id": 5982, - "nodeType": "ParameterList", - "parameters": [], - "src": "1431:0:26" - }, - "scope": 6539, - "src": "1340:305:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 6045, - "nodeType": "Block", - "src": "1708:264:26", - "statements": [ - { - "assignments": [ - 6025 - ], - "declarations": [ - { - "constant": false, - "id": 6025, - "name": "underlying", - "nodeType": "VariableDeclaration", - "scope": 6045, - "src": "1777:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6024, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1777:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6031, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6027, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6019, - "src": "1806:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6026, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "1798:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6028, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1798:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "underlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 809, - "src": "1798:26:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" - } - }, - "id": 6030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1798:28:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1777:49:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 6041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6037, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6019, - "src": "1884:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 6038, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6021, - "src": "1892:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6034, - "name": "underlying", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6025, - "src": "1864:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6033, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "1857:6:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 6035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1857:18:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$120", - "typeString": "contract IERC20" - } - }, - "id": 6036, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "approve", - "nodeType": "MemberAccess", - "referencedDeclaration": 77, - "src": "1857:26:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" - } - }, - "id": 6039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1857:42:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 6040, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1903:4:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1857:50:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c6564", - "id": 6042, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1921:34:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ca9a377afbc7098beb603cadabe94f2184e0ef6e022546af9554c879436a6067", - "typeString": "literal_string \"cmpnd-mgr-ctoken-approved-failed\"" - }, - "value": "cmpnd-mgr-ctoken-approved-failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ca9a377afbc7098beb603cadabe94f2184e0ef6e022546af9554c879436a6067", - "typeString": "literal_string \"cmpnd-mgr-ctoken-approved-failed\"" - } - ], - "id": 6032, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 7908, - 7909 - ], - "referencedDeclaration": 7909, - "src": "1836:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 6043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1836:129:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6044, - "nodeType": "ExpressionStatement", - "src": "1836:129:26" - } - ] - }, - "documentation": null, - "id": 6046, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6022, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6019, - "name": "cToken", - "nodeType": "VariableDeclaration", - "scope": 6046, - "src": "1669:14:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6018, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1669:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6021, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 6046, - "src": "1685:14:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6020, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1685:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1668:32:26" - }, - "returnParameters": { - "id": 6023, - "nodeType": "ParameterList", - "parameters": [], - "src": "1708:0:26" - }, - "scope": 6539, - "src": "1651:321:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 6088, - "nodeType": "Block", - "src": "2118:339:26", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 6059, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6057, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6050, - "src": "2132:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 6058, - "name": "CEtherAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6048, - "src": "2142:13:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2132:23:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 6086, - "nodeType": "Block", - "src": "2220:231:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6080, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6052, - "src": "2326:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 6081, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6054, - "src": "2357:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6074, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6050, - "src": "2274:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6073, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "2266:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2266:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6076, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "underlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 809, - "src": "2266:26:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" - } - }, - "id": 6077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2266:28:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6072, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "2259:6:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 6078, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2259:36:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$120", - "typeString": "contract IERC20" - } - }, - "id": 6079, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 59, - "src": "2259:45:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" - } - }, - "id": 6082, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2259:122:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "636d706e642d6d67722d7472616e736665722d6661696c6564", - "id": 6083, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2399:27:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a0b492c6552587e508e318f471f5c8125b6edf0db99286af9f7919fd44bd2148", - "typeString": "literal_string \"cmpnd-mgr-transfer-failed\"" - }, - "value": "cmpnd-mgr-transfer-failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a0b492c6552587e508e318f471f5c8125b6edf0db99286af9f7919fd44bd2148", - "typeString": "literal_string \"cmpnd-mgr-transfer-failed\"" - } - ], - "id": 6071, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 7908, - 7909 - ], - "referencedDeclaration": 7909, - "src": "2234:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 6084, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2234:206:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6085, - "nodeType": "ExpressionStatement", - "src": "2234:206:26" - } - ] - }, - "id": 6087, - "nodeType": "IfStatement", - "src": "2128:323:26", - "trueBody": { - "id": 6070, - "nodeType": "Block", - "src": "2157:57:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "", - "id": 6067, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2200:2:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "arguments": [ - { - "argumentTypes": null, - "id": 6065, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6054, - "src": "2192:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6060, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6052, - "src": "2171:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6063, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2171:14:26", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 6064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2171:20:26", - "typeDescriptions": { - "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", - "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" - } - }, - "id": 6066, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2171:28:26", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 6068, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2171:32:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "id": 6069, - "nodeType": "ExpressionStatement", - "src": "2171:32:26" - } - ] - } - } - ] - }, - "documentation": null, - "id": 6089, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6055, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6048, - "name": "CEtherAddress", - "nodeType": "VariableDeclaration", - "scope": 6089, - "src": "2006:21:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6047, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2006:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6050, - "name": "cToken", - "nodeType": "VariableDeclaration", - "scope": 6089, - "src": "2037:14:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6049, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2037:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6052, - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 6089, - "src": "2061:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6051, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2061:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6054, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 6089, - "src": "2088:14:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6053, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2088:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1996:112:26" - }, - "returnParameters": { - "id": 6056, - "nodeType": "ParameterList", - "parameters": [], - "src": "2118:0:26" - }, - "scope": 6539, - "src": "1978:479:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 6130, - "nodeType": "Block", - "src": "2561:310:26", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 6100, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6098, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6093, - "src": "2575:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 6099, - "name": "CEtherAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6091, - "src": "2585:13:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2575:23:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 6128, - "nodeType": "Block", - "src": "2674:191:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6112, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6093, - "src": "2697:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 6113, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6095, - "src": "2705:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 6111, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6046, - "src": "2688:8:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 6114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2688:24:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6115, - "nodeType": "ExpressionStatement", - "src": "2688:24:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6121, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6095, - "src": "2779:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6118, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6093, - "src": "2759:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6117, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "2751:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2751:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "repayBorrow", - "nodeType": "MemberAccess", - "referencedDeclaration": 769, - "src": "2751:27:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) external returns (uint256)" - } - }, - "id": 6122, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2751:35:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 6123, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2790:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2751:40:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "636d706e642d6d67722d63746f6b656e2d72657061792d6661696c6564", - "id": 6125, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2809:31:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_999cd91154bd9e69ce31d224fa6000cac622ab857a94bfb0df17582f1ba47dfe", - "typeString": "literal_string \"cmpnd-mgr-ctoken-repay-failed\"" - }, - "value": "cmpnd-mgr-ctoken-repay-failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_999cd91154bd9e69ce31d224fa6000cac622ab857a94bfb0df17582f1ba47dfe", - "typeString": "literal_string \"cmpnd-mgr-ctoken-repay-failed\"" - } - ], - "id": 6116, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 7908, - 7909 - ], - "referencedDeclaration": 7909, - "src": "2726:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 6126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2726:128:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6127, - "nodeType": "ExpressionStatement", - "src": "2726:128:26" - } - ] - }, - "id": 6129, - "nodeType": "IfStatement", - "src": "2571:294:26", - "trueBody": { - "id": 6110, - "nodeType": "Block", - "src": "2600:68:26", - "statements": [ + "expression": { + "argumentTypes": null, + "arguments": [ { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, "arguments": [ - { - "argumentTypes": null, - "id": 6106, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6095, - "src": "2648:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6102, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6093, - "src": "2622:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6101, - "name": "ICEther", + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6010, + "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "2614:7:26", + "referencedDeclaration": 5990, + "src": "1736:3:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICEther_$732_$", - "typeString": "type(contract ICEther)" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 6103, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6009, "isConstant": false, "isLValue": false, - "isPure": false, - "kind": "typeConversion", + "isPure": true, "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2614:15:26", + "nodeType": "ElementaryTypeNameExpression", + "src": "1728:7:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_ICEther_$732", - "typeString": "contract ICEther" - } + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" }, - "id": 6104, + "id": 6011, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberName": "repayBorrow", - "nodeType": "MemberAccess", - "referencedDeclaration": 698, - "src": "2614:27:26", + "names": [], + "nodeType": "FunctionCall", + "src": "1728:12:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_payable$__$returns$__$", - "typeString": "function () payable external" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 6105, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6008, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2614:33:26", + "nodeType": "ElementaryTypeNameExpression", + "src": "1720:7:26", "typeDescriptions": { - "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$", - "typeString": "function (uint256) pure returns (function () payable external)" - } + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": "bytes20" }, - "id": 6107, + "id": 6012, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2614:41:26", + "src": "1720:21:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_payable$__$returns$__$value", - "typeString": "function () payable external" + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" } - }, - "id": 6108, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 6007, "isConstant": false, "isLValue": false, - "isPure": false, - "kind": "functionCall", + "isPure": true, "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2614:43:26", + "nodeType": "ElementaryTypeNameExpression", + "src": "1712:7:26", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6109, - "nodeType": "ExpressionStatement", - "src": "2614:43:26" - } - ] - } - } - ] - }, - "documentation": null, - "id": 6131, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_repayBorrow", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6096, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6091, - "name": "CEtherAddress", - "nodeType": "VariableDeclaration", - "scope": 6131, - "src": "2485:21:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6090, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2485:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6093, - "name": "cToken", - "nodeType": "VariableDeclaration", - "scope": 6131, - "src": "2508:14:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6092, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2508:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6095, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 6131, - "src": "2524:14:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6094, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2524:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2484:55:26" - }, - "returnParameters": { - "id": 6097, - "nodeType": "ParameterList", - "parameters": [], - "src": "2561:0:26" - }, - "scope": 6539, - "src": "2463:408:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 6150, - "nodeType": "Block", - "src": "2951:156:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": "bytes32" }, - "id": 6146, + "id": 6013, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6143, - "name": "redeemTokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6135, - "src": "3015:12:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6140, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6133, - "src": "2990:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6139, - "name": "ICToken", + "names": [], + "nodeType": "FunctionCall", + "src": "1712:30:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6015, + "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "2982:7:26", + "referencedDeclaration": 5994, + "src": "1764:1:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 6141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2982:15:26", + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6014, + "name": "DSGuard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3163, + "src": "1756:7:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" + "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", + "typeString": "type(contract DSGuard)" } }, - "id": 6142, + "id": 6016, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberName": "redeemUnderlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 755, - "src": "2982:32:26", + "names": [], + "nodeType": "FunctionCall", + "src": "1756:10:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) external returns (uint256)" + "typeIdentifier": "t_contract$_DSGuard_$3163", + "typeString": "contract DSGuard" } }, - "id": 6144, + "id": 6017, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2982:46:26", + "memberName": "ANY", + "nodeType": "MemberAccess", + "referencedDeclaration": 2958, + "src": "1756:14:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 6145, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3032:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2982:51:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564", - "id": 6147, + "id": 6018, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "string", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "3047:43:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_422f21513af86bee962b3ccca9c32226e776b380fb2ed292445c5cf781b3f1f1", - "typeString": "literal_string \"cmpnd-mgr-ctoken-redeem-underlying-failed\"" - }, - "value": "cmpnd-mgr-ctoken-redeem-underlying-failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_422f21513af86bee962b3ccca9c32226e776b380fb2ed292445c5cf781b3f1f1", - "typeString": "literal_string \"cmpnd-mgr-ctoken-redeem-underlying-failed\"" - } - ], - "id": 6138, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 7908, - 7909 - ], - "referencedDeclaration": 7909, - "src": "2961:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 6148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2961:139:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6149, - "nodeType": "ExpressionStatement", - "src": "2961:139:26" - } - ] - }, - "documentation": null, - "id": 6151, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_redeemUnderlying", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6136, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6133, - "name": "cToken", - "nodeType": "VariableDeclaration", - "scope": 6151, - "src": "2904:14:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6132, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2904:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6135, - "name": "redeemTokens", - "nodeType": "VariableDeclaration", - "scope": 6151, - "src": "2920:20:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6134, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2920:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2903:38:26" - }, - "returnParameters": { - "id": 6137, - "nodeType": "ParameterList", - "parameters": [], - "src": "2951:0:26" - }, - "scope": 6539, - "src": "2877:230:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 6200, - "nodeType": "Block", - "src": "3181:642:26", - "statements": [ - { - "assignments": [ - 6159 - ], - "declarations": [ - { - "constant": false, - "id": 6159, - "name": "borrowedAmount", - "nodeType": "VariableDeclaration", - "scope": 6200, - "src": "3228:22:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6158, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3228:7:26", + "names": [], + "nodeType": "FunctionCall", + "src": "1756:16:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - "value": null, - "visibility": "internal" - } - ], - "id": 6168, - "initialValue": { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "arguments": [ - { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { "argumentTypes": null, - "id": 6165, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8005, - "src": "3311:4:26", + "arguments": [ + { + "argumentTypes": null, + "id": 6020, + "name": "g", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5994, + "src": "1794:1:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6019, + "name": "DSGuard", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3163, + "src": "1786:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", + "typeString": "type(contract DSGuard)" + } + }, + "id": 6021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1786:10:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_DedgeExitManager_$6539", - "typeString": "contract DedgeExitManager" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DedgeExitManager_$6539", - "typeString": "contract DedgeExitManager" + "typeIdentifier": "t_contract$_DSGuard_$3163", + "typeString": "contract DSGuard" } - ], - "id": 6164, + }, + "id": 6022, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3303:7:26", + "memberName": "ANY", + "nodeType": "MemberAccess", + "referencedDeclaration": 2958, + "src": "1786:14:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } }, - "id": 6166, + "id": 6023, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3303:13:26", + "src": "1786:16:26", "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } ], "expression": { @@ -12702,12 +9172,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6161, - "name": "cToken", + "id": 6004, + "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6155, - "src": "3261:6:26", + "referencedDeclaration": 5994, + "src": "1689:1:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -12721,18 +9191,18 @@ "typeString": "address" } ], - "id": 6160, - "name": "ICToken", + "id": 6003, + "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "3253:7:26", + "referencedDeclaration": 3163, + "src": "1681:7:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" + "typeIdentifier": "t_type$_t_contract$_DSGuard_$3163_$", + "typeString": "type(contract DSGuard)" } }, - "id": 6162, + "id": 6005, "isConstant": false, "isLValue": false, "isPure": false, @@ -12740,27 +9210,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3253:15:26", + "src": "1681:10:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" + "typeIdentifier": "t_contract$_DSGuard_$3163", + "typeString": "contract DSGuard" } }, - "id": 6163, + "id": 6006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "borrowBalanceCurrent", + "memberName": "forbid", "nodeType": "MemberAccess", - "referencedDeclaration": 790, - "src": "3253:36:26", + "referencedDeclaration": 3114, + "src": "1681:17:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32) external" } }, - "id": 6167, + "id": 6024, "isConstant": false, "isLValue": false, "isPure": false, @@ -12768,303 +9238,249 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3253:73:26", + "src": "1681:131:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "nodeType": "VariableDeclarationStatement", - "src": "3228:98:26" - }, + "id": 6025, + "nodeType": "ExpressionStatement", + "src": "1681:131:26" + } + ] + }, + "documentation": null, + "id": 6027, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_proxyGuardForbid", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5991, + "nodeType": "ParameterList", + "parameters": [ { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 6171, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6169, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6155, - "src": "3399:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 6170, - "name": "CEtherAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6153, - "src": "3409:13:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3399:23:26", + "constant": false, + "id": 5988, + "name": "proxyAddress", + "nodeType": "VariableDeclaration", + "scope": 6027, + "src": "1541:28:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5987, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1541:15:26", + "stateMutability": "payable", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "falseBody": null, - "id": 6193, - "nodeType": "IfStatement", - "src": "3395:360:26", - "trueBody": { - "id": 6192, - "nodeType": "Block", - "src": "3424:331:26", - "statements": [ - { - "assignments": [ - 6173 - ], - "declarations": [ - { - "constant": false, - "id": 6173, - "name": "underlying", - "nodeType": "VariableDeclaration", - "scope": 6192, - "src": "3438:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6172, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3438:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6179, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6175, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6155, - "src": "3467:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6174, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "3459:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3459:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "underlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 809, - "src": "3459:26:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" - } - }, - "id": 6178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3459:28:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3438:49:26" + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5990, + "name": "src", + "nodeType": "VariableDeclaration", + "scope": 6027, + "src": "1571:11:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5989, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1571:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1540:43:26" + }, + "returnParameters": { + "id": 5992, + "nodeType": "ParameterList", + "parameters": [], + "src": "1605:0:26" + }, + "scope": 6428, + "src": "1514:305:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6055, + "nodeType": "Block", + "src": "1882:264:26", + "statements": [ + { + "assignments": [ + 6035 + ], + "declarations": [ + { + "constant": false, + "id": 6035, + "name": "underlying", + "nodeType": "VariableDeclaration", + "scope": 6055, + "src": "1951:18:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - { - "assignments": [ - 6181 - ], - "declarations": [ + "typeName": { + "id": 6034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1951:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6041, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ { - "constant": false, - "id": 6181, - "name": "ethAmount", - "nodeType": "VariableDeclaration", - "scope": 6192, - "src": "3545:17:26", - "stateVariable": false, - "storageLocation": "default", + "argumentTypes": null, + "id": 6037, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6029, + "src": "1980:6:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6180, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3545:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 6186, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6183, - "name": "underlying", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6173, - "src": "3603:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, + "expression": { + "argumentTypes": [ { - "argumentTypes": null, - "id": 6184, - "name": "borrowedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6159, - "src": "3631:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "typeIdentifier": "t_address", + "typeString": "address" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 6182, - "name": "_getEthToTokenOutput", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5169, - "src": "3565:20:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) view returns (uint256)" - } - }, - "id": 6185, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3565:94:26", + "id": 6036, + "name": "ICToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "1972:7:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", + "typeString": "type(contract ICToken)" } }, - "nodeType": "VariableDeclarationStatement", - "src": "3545:114:26" + "id": 6038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1972:15:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICToken_$858", + "typeString": "contract ICToken" + } }, + "id": 6039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "underlying", + "nodeType": "MemberAccess", + "referencedDeclaration": 809, + "src": "1972:26:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 6040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1972:28:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1951:49:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6188, - "name": "underlying", + "id": 6047, + "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6173, - "src": "3722:10:26", + "referencedDeclaration": 6029, + "src": "2058:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -13072,12 +9488,12 @@ }, { "argumentTypes": null, - "id": 6189, - "name": "ethAmount", + "id": 6048, + "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6181, - "src": "3734:9:26", + "referencedDeclaration": 6031, + "src": "2066:6:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13095,21 +9511,70 @@ "typeString": "uint256" } ], - "id": 6187, - "name": "_ethToToken", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4959, - 4988 - ], - "referencedDeclaration": 4959, - "src": "3710:11:26", + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6044, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6035, + "src": "2038:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6043, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2031:6:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 6045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2031:18:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$120", + "typeString": "contract IERC20" + } + }, + "id": 6046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 77, + "src": "2031:26:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) returns (uint256)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 6190, + "id": 6049, "isConstant": false, "isLValue": false, "isPure": false, @@ -13117,90 +9582,83 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3710:34:26", + "src": "2031:42:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 6191, - "nodeType": "ExpressionStatement", - "src": "3710:34:26" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6195, - "name": "CEtherAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6153, - "src": "3778:13:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 6196, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6155, - "src": "3793:6:26", + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 6050, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2077:4:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2031:50:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { "argumentTypes": null, - "id": 6197, - "name": "borrowedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6159, - "src": "3801:14:26", + "hexValue": "636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c6564", + "id": 6052, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2095:34:26", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "typeIdentifier": "t_stringliteral_ca9a377afbc7098beb603cadabe94f2184e0ef6e022546af9554c879436a6067", + "typeString": "literal_string \"cmpnd-mgr-ctoken-approved-failed\"" + }, + "value": "cmpnd-mgr-ctoken-approved-failed" } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_stringliteral_ca9a377afbc7098beb603cadabe94f2184e0ef6e022546af9554c879436a6067", + "typeString": "literal_string \"cmpnd-mgr-ctoken-approved-failed\"" } ], - "id": 6194, - "name": "_repayBorrow", + "id": 6042, + "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6131, - "src": "3765:12:26", + "overloadedDeclarations": [ + 7830, + 7831 + ], + "referencedDeclaration": 7831, + "src": "2010:7:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 6198, + "id": 6053, "isConstant": false, "isLValue": false, "isPure": false, @@ -13208,36 +9666,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3765:51:26", + "src": "2010:129:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6199, + "id": 6054, "nodeType": "ExpressionStatement", - "src": "3765:51:26" + "src": "2010:129:26" } ] }, "documentation": null, - "id": 6201, + "id": 6056, "implemented": true, "kind": "function", "modifiers": [], - "name": "_repayDebt", + "name": "_approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 6156, + "id": 6032, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6153, - "name": "CEtherAddress", + "id": 6029, + "name": "cToken", "nodeType": "VariableDeclaration", - "scope": 6201, - "src": "3133:21:26", + "scope": 6056, + "src": "1843:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13245,10 +9703,10 @@ "typeString": "address" }, "typeName": { - "id": 6152, + "id": 6028, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3133:7:26", + "src": "1843:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13260,589 +9718,515 @@ }, { "constant": false, - "id": 6155, - "name": "cToken", + "id": 6031, + "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6201, - "src": "3156:14:26", + "scope": 6056, + "src": "1859:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 6154, - "name": "address", + "id": 6030, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3156:7:26", - "stateMutability": "nonpayable", + "src": "1859:7:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "3132:39:26" + "src": "1842:32:26" }, "returnParameters": { - "id": 6157, + "id": 6033, "nodeType": "ParameterList", "parameters": [], - "src": "3181:0:26" + "src": "1882:0:26" }, - "scope": 6539, - "src": "3113:710:26", + "scope": 6428, + "src": "1825:321:26", "stateMutability": "nonpayable", "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 6246, - "nodeType": "Block", - "src": "3944:419:26", - "statements": [ - { - "assignments": [ - 6211 - ], - "declarations": [ - { - "constant": false, - "id": 6211, - "name": "suppliedAmount", - "nodeType": "VariableDeclaration", - "scope": 6246, - "src": "3981:22:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3981:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6220, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6217, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8005, - "src": "4063:4:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DedgeExitManager_$6539", - "typeString": "contract DedgeExitManager" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DedgeExitManager_$6539", - "typeString": "contract DedgeExitManager" - } - ], - "id": 6216, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4055:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 6218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4055:13:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6213, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6205, - "src": "4014:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6212, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "4006:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6214, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4006:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOfUnderlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 804, - "src": "4006:35:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } + "visibility": "public" + }, + { + "body": { + "id": 6098, + "nodeType": "Block", + "src": "2292:339:26", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 6219, + "id": 6069, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4006:72:26", + "leftExpression": { + "argumentTypes": null, + "id": 6067, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6060, + "src": "2306:6:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 6068, + "name": "CEtherAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6058, + "src": "2316:13:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2306:23:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "VariableDeclarationStatement", - "src": "3981:97:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6222, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6205, - "src": "4132:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, + "falseBody": { + "id": 6096, + "nodeType": "Block", + "src": "2394:231:26", + "statements": [ { - "argumentTypes": null, - "id": 6223, - "name": "suppliedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6211, - "src": "4140:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6090, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6062, + "src": "2500:9:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6091, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6064, + "src": "2531:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6084, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6060, + "src": "2448:6:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6083, + "name": "ICToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "2440:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", + "typeString": "type(contract ICToken)" + } + }, + "id": 6085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2440:15:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICToken_$858", + "typeString": "contract ICToken" + } + }, + "id": 6086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "underlying", + "nodeType": "MemberAccess", + "referencedDeclaration": 809, + "src": "2440:26:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 6087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2440:28:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6082, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2433:6:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$120_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 6088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2433:36:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$120", + "typeString": "contract IERC20" + } + }, + "id": 6089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 59, + "src": "2433:45:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 6092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2433:122:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "636d706e642d6d67722d7472616e736665722d6661696c6564", + "id": 6093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2573:27:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a0b492c6552587e508e318f471f5c8125b6edf0db99286af9f7919fd44bd2148", + "typeString": "literal_string \"cmpnd-mgr-transfer-failed\"" + }, + "value": "cmpnd-mgr-transfer-failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a0b492c6552587e508e318f471f5c8125b6edf0db99286af9f7919fd44bd2148", + "typeString": "literal_string \"cmpnd-mgr-transfer-failed\"" + } + ], + "id": 6081, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7830, + 7831 + ], + "referencedDeclaration": 7831, + "src": "2408:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2408:206:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 6221, - "name": "_redeemUnderlying", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6151, - "src": "4114:17:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 6224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4114:41:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6225, - "nodeType": "ExpressionStatement", - "src": "4114:41:26" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 6228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6226, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6205, - "src": "4170:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 6227, - "name": "CEtherAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6203, - "src": "4180:13:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "id": 6095, + "nodeType": "ExpressionStatement", + "src": "2408:206:26" } - }, - "src": "4170:23:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + ] }, - "falseBody": null, - "id": 6232, + "id": 6097, "nodeType": "IfStatement", - "src": "4166:75:26", + "src": "2302:323:26", "trueBody": { - "id": 6231, + "id": 6080, "nodeType": "Block", - "src": "4195:46:26", + "src": "2331:57:26", "statements": [ { "expression": { "argumentTypes": null, - "id": 6229, - "name": "suppliedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6211, - "src": "4216:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 6209, - "id": 6230, - "nodeType": "Return", - "src": "4209:21:26" - } - ] - } - }, - { - "assignments": [ - 6234 - ], - "declarations": [ - { - "constant": false, - "id": 6234, - "name": "underlying", - "nodeType": "VariableDeclaration", - "scope": 6246, - "src": "4251:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6233, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4251:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6240, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6236, - "name": "cToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6205, - "src": "4280:6:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ + "arguments": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "argumentTypes": null, + "hexValue": "", + "id": 6077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2374:2:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" } ], - "id": 6235, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "4272:7:26", + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "arguments": [ + { + "argumentTypes": null, + "id": 6075, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6064, + "src": "2366:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6070, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6062, + "src": "2345:9:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 6073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2345:14:26", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 6074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2345:20:26", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", + "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" + } + }, + "id": 6076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2345:28:26", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 6078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2345:32:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" } }, - "id": 6237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4272:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "underlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 809, - "src": "4272:26:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" - } - }, - "id": 6239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4272:28:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4251:49:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6242, - "name": "underlying", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6234, - "src": "4329:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 6243, - "name": "suppliedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6211, - "src": "4341:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 6241, - "name": "_tokenToEth", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 5006, - 5045 - ], - "referencedDeclaration": 5006, - "src": "4317:11:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) returns (uint256)" + "id": 6079, + "nodeType": "ExpressionStatement", + "src": "2345:32:26" } - }, - "id": 6244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4317:39:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 6209, - "id": 6245, - "nodeType": "Return", - "src": "4310:46:26" + ] + } } ] }, "documentation": null, - "id": 6247, + "id": 6099, "implemented": true, "kind": "function", "modifiers": [], - "name": "_retrieveCollateral", + "name": "_transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 6206, + "id": 6065, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6203, + "id": 6058, "name": "CEtherAddress", "nodeType": "VariableDeclaration", - "scope": 6247, - "src": "3858:21:26", + "scope": 6099, + "src": "2180:21:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13850,10 +10234,10 @@ "typeString": "address" }, "typeName": { - "id": 6202, + "id": 6057, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3858:7:26", + "src": "2180:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13865,11 +10249,11 @@ }, { "constant": false, - "id": 6205, + "id": 6060, "name": "cToken", "nodeType": "VariableDeclaration", - "scope": 6247, - "src": "3881:14:26", + "scope": 6099, + "src": "2211:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13877,10 +10261,10 @@ "typeString": "address" }, "typeName": { - "id": 6204, + "id": 6059, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3881:7:26", + "src": "2211:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13889,21 +10273,41 @@ }, "value": null, "visibility": "internal" - } - ], - "src": "3857:39:26" - }, - "returnParameters": { - "id": 6209, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 6208, - "name": "", + "id": 6062, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 6099, + "src": "2235:17:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6061, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2235:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6064, + "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6247, - "src": "3931:7:26", + "scope": 6099, + "src": "2262:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13911,10 +10315,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6207, + "id": 6063, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3931:7:26", + "src": "2262:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13924,297 +10328,76 @@ "visibility": "internal" } ], - "src": "3930:9:26" + "src": "2170:112:26" + }, + "returnParameters": { + "id": 6066, + "nodeType": "ParameterList", + "parameters": [], + "src": "2292:0:26" }, - "scope": 6539, - "src": "3829:534:26", + "scope": 6428, + "src": "2152:479:26", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 6346, + "id": 6140, "nodeType": "Block", - "src": "4524:961:26", + "src": "2735:310:26", "statements": [ { - "assignments": [ - 6259 - ], - "declarations": [ - { - "constant": false, - "id": 6259, - "name": "epCalldata", - "nodeType": "VariableDeclaration", - "scope": 6346, - "src": "4570:38:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata" - }, - "typeName": { - "contractScope": null, - "id": 6258, - "name": "ExitPositionCalldata", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5935, - "src": "4570:20:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_storage_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6266, - "initialValue": { + "condition": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6262, - "name": "_params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6255, - "src": "4635:7:26", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 6263, - "name": "ExitPositionCalldata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5935, - "src": "4657:20:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5935_storage_ptr_$", - "typeString": "type(struct DedgeExitManager.ExitPositionCalldata storage pointer)" - } - } - ], - "id": 6264, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4656:22:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5935_storage_ptr_$", - "typeString": "type(struct DedgeExitManager.ExitPositionCalldata storage pointer)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5935_storage_ptr_$", - "typeString": "type(struct DedgeExitManager.ExitPositionCalldata storage pointer)" - } - ], - "expression": { - "argumentTypes": null, - "id": 6260, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "4611:3:26", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 6261, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4611:10:26", + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6108, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6103, + "src": "2749:6:26", "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 6265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4611:77:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4570:118:26" - }, - { - "assignments": [ - 6268 - ], - "declarations": [ - { - "constant": false, - "id": 6268, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 6109, "name": "CEtherAddress", - "nodeType": "VariableDeclaration", - "scope": 6346, - "src": "4699:21:26", - "stateVariable": false, - "storageLocation": "default", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6101, + "src": "2759:13:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" - }, - "typeName": { - "id": 6267, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4699:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6275, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6270, - "name": "epCalldata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "4752:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" - } - }, - "id": 6271, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "addressRegistryAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 5928, - "src": "4752:50:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6269, - "name": "AddressRegistry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7628, - "src": "4723:15:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", - "typeString": "type(contract AddressRegistry)" - } - }, - "id": 6272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4723:89:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - } - }, - "id": 6273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "CEtherAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 7588, - "src": "4723:116:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" } }, - "id": 6274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4723:118:26", + "src": "2749:23:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "VariableDeclarationStatement", - "src": "4699:142:26" - }, - { - "body": { - "id": 6296, + "falseBody": { + "id": 6138, "nodeType": "Block", - "src": "4958:77:26", + "src": "2848:191:26", "statements": [ { "expression": { @@ -14222,12 +10405,12 @@ "arguments": [ { "argumentTypes": null, - "id": 6289, - "name": "CEtherAddress", + "id": 6122, + "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6268, - "src": "4983:13:26", + "referencedDeclaration": 6103, + "src": "2871:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -14235,84 +10418,245 @@ }, { "argumentTypes": null, - "baseExpression": { + "id": 6123, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6105, + "src": "2879:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6121, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6056, + "src": "2862:8:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2862:24:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6125, + "nodeType": "ExpressionStatement", + "src": "2862:24:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6131, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6105, + "src": "2953:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], "expression": { - "argumentTypes": null, - "id": 6290, - "name": "epCalldata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "4998:10:26", + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6128, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6103, + "src": "2933:6:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6127, + "name": "ICToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "2925:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", + "typeString": "type(contract ICToken)" + } + }, + "id": 6129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2925:15:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICToken_$858", + "typeString": "contract ICToken" + } + }, + "id": 6130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "repayBorrow", + "nodeType": "MemberAccess", + "referencedDeclaration": 769, + "src": "2925:27:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) external returns (uint256)" } }, - "id": 6291, + "id": 6132, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "debtCTokens", - "nodeType": "MemberAccess", - "referencedDeclaration": 5931, - "src": "4998:22:26", + "names": [], + "nodeType": "FunctionCall", + "src": "2925:35:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6293, - "indexExpression": { + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { "argumentTypes": null, - "id": 6292, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6277, - "src": "5021:1:26", + "hexValue": "30", + "id": 6133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2964:1:26", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, + "src": "2925:40:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "636d706e642d6d67722d63746f6b656e2d72657061792d6661696c6564", + "id": 6135, "isConstant": false, - "isLValue": true, - "isPure": false, + "isLValue": false, + "isPure": true, + "kind": "string", "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4998:25:26", + "nodeType": "Literal", + "src": "2983:31:26", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_stringliteral_999cd91154bd9e69ce31d224fa6000cac622ab857a94bfb0df17582f1ba47dfe", + "typeString": "literal_string \"cmpnd-mgr-ctoken-repay-failed\"" + }, + "value": "cmpnd-mgr-ctoken-repay-failed" } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_stringliteral_999cd91154bd9e69ce31d224fa6000cac622ab857a94bfb0df17582f1ba47dfe", + "typeString": "literal_string \"cmpnd-mgr-ctoken-repay-failed\"" } ], - "id": 6288, - "name": "_repayDebt", + "id": 6126, + "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6201, - "src": "4972:10:26", + "overloadedDeclarations": [ + 7830, + 7831 + ], + "referencedDeclaration": 7831, + "src": "2900:7:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 6294, + "id": 6136, "isConstant": false, "isLValue": false, "isPure": false, @@ -14320,349 +10664,134 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4972:52:26", + "src": "2900:128:26", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 6295, - "nodeType": "ExpressionStatement", - "src": "4972:52:26" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6284, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6280, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6277, - "src": "4918:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6281, - "name": "epCalldata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "4922:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" - } - }, - "id": 6282, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "debtCTokens", - "nodeType": "MemberAccess", - "referencedDeclaration": 5931, - "src": "4922:22:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" - } - }, - "id": 6283, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4922:29:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4918:33:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6297, - "initializationExpression": { - "assignments": [ - 6277 - ], - "declarations": [ - { - "constant": false, - "id": 6277, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 6297, - "src": "4903:9:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6276, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4903:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6279, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 6278, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4915:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "4903:13:26" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 6286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4953:3:26", - "subExpression": { - "argumentTypes": null, - "id": 6285, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6277, - "src": "4953:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6287, - "nodeType": "ExpressionStatement", - "src": "4953:3:26" - }, - "nodeType": "ForStatement", - "src": "4898:137:26" - }, - { - "assignments": [ - 6299 - ], - "declarations": [ - { - "constant": false, - "id": 6299, - "name": "totalEthAmount", - "nodeType": "VariableDeclaration", - "scope": 6346, - "src": "5044:22:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6298, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5044:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6300, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "5044:22:26" - }, - { - "body": { - "id": 6323, + "id": 6137, + "nodeType": "ExpressionStatement", + "src": "2900:128:26" + } + ] + }, + "id": 6139, + "nodeType": "IfStatement", + "src": "2745:294:26", + "trueBody": { + "id": 6120, "nodeType": "Block", - "src": "5142:156:26", + "src": "2774:68:26", "statements": [ { "expression": { "argumentTypes": null, - "id": 6321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6313, - "name": "totalEthAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6299, - "src": "5156:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], "arguments": [ { "argumentTypes": null, - "id": 6315, - "name": "CEtherAddress", + "id": 6116, + "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6268, - "src": "5211:13:26", + "referencedDeclaration": 6105, + "src": "2822:6:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - }, - { + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { "argumentTypes": null, - "baseExpression": { + "expression": { "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6112, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6103, + "src": "2796:6:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], "expression": { - "argumentTypes": null, - "id": 6316, - "name": "epCalldata", + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6111, + "name": "ICEther", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "5242:10:26", + "referencedDeclaration": 732, + "src": "2788:7:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + "typeIdentifier": "t_type$_t_contract$_ICEther_$732_$", + "typeString": "type(contract ICEther)" } }, - "id": 6317, + "id": 6113, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberName": "collateralCTokens", - "nodeType": "MemberAccess", - "referencedDeclaration": 5934, - "src": "5242:28:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" - } - }, - "id": 6319, - "indexExpression": { - "argumentTypes": null, - "id": 6318, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6302, - "src": "5271:1:26", + "names": [], + "nodeType": "FunctionCall", + "src": "2788:15:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_contract$_ICEther_$732", + "typeString": "contract ICEther" } }, + "id": 6114, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5242:31:26", + "memberName": "repayBorrow", + "nodeType": "MemberAccess", + "referencedDeclaration": 698, + "src": "2788:27:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_external_payable$__$returns$__$", + "typeString": "function () payable external" } - ], - "id": 6314, - "name": "_retrieveCollateral", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6247, - "src": "5174:19:26", + }, + "id": 6115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2788:33:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$", - "typeString": "function (address,address) returns (uint256)" + "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$", + "typeString": "function (uint256) pure returns (function () payable external)" } }, - "id": 6320, + "id": 6117, "isConstant": false, "isLValue": false, "isPure": false, @@ -14670,380 +10799,747 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5174:113:26", + "src": "2788:41:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_external_payable$__$returns$__$value", + "typeString": "function () payable external" } }, - "src": "5156:131:26", + "id": 6118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2788:43:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 6322, + "id": 6119, "nodeType": "ExpressionStatement", - "src": "5156:131:26" + "src": "2788:43:26" } ] + } + } + ] + }, + "documentation": null, + "id": 6141, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_repayBorrow", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6101, + "name": "CEtherAddress", + "nodeType": "VariableDeclaration", + "scope": 6141, + "src": "2659:21:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - "condition": { - "argumentTypes": null, - "commonType": { + "typeName": { + "id": 6100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2659:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6103, + "name": "cToken", + "nodeType": "VariableDeclaration", + "scope": 6141, + "src": "2682:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2682:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6105, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 6141, + "src": "2698:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2698:7:26", + "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - "id": 6309, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6305, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6302, - "src": "5096:1:26", + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2658:55:26" + }, + "returnParameters": { + "id": 6107, + "nodeType": "ParameterList", + "parameters": [], + "src": "2735:0:26" + }, + "scope": 6428, + "src": "2637:408:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6164, + "nodeType": "Block", + "src": "3125:176:26", + "statements": [ + { + "assignments": [ + 6149 + ], + "declarations": [ + { + "constant": false, + "id": 6149, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 6164, + "src": "3135:6:26", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" + }, + "typeName": { + "id": 6148, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3135:4:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6156, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6154, + "name": "redeemTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6145, + "src": "3177:12:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], "expression": { "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6151, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6143, + "src": "3152:6:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], "expression": { - "argumentTypes": null, - "id": 6306, - "name": "epCalldata", + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6150, + "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "5100:10:26", + "referencedDeclaration": 858, + "src": "3144:7:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", + "typeString": "type(contract ICToken)" } }, - "id": 6307, + "id": 6152, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberName": "collateralCTokens", - "nodeType": "MemberAccess", - "referencedDeclaration": 5934, - "src": "5100:28:26", + "names": [], + "nodeType": "FunctionCall", + "src": "3144:15:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" + "typeIdentifier": "t_contract$_ICToken_$858", + "typeString": "contract ICToken" } }, - "id": 6308, + "id": 6153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "length", + "memberName": "redeemUnderlying", "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5100:35:26", + "referencedDeclaration": 755, + "src": "3144:32:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) external returns (uint256)" } }, - "src": "5096:39:26", + "id": 6155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3144:46:26", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6324, - "initializationExpression": { - "assignments": [ - 6302 - ], - "declarations": [ + "nodeType": "VariableDeclarationStatement", + "src": "3135:55:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "constant": false, - "id": 6302, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 6324, - "src": "5081:9:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { + "argumentTypes": null, + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "typeName": { - "id": 6301, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5081:7:26", + "id": 6160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6158, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6149, + "src": "3221:1:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "value": null, - "visibility": "internal" + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3226:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3221:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564", + "id": 6161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3241:43:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_422f21513af86bee962b3ccca9c32226e776b380fb2ed292445c5cf781b3f1f1", + "typeString": "literal_string \"cmpnd-mgr-ctoken-redeem-underlying-failed\"" + }, + "value": "cmpnd-mgr-ctoken-redeem-underlying-failed" } ], - "id": 6304, - "initialValue": { + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_422f21513af86bee962b3ccca9c32226e776b380fb2ed292445c5cf781b3f1f1", + "typeString": "literal_string \"cmpnd-mgr-ctoken-redeem-underlying-failed\"" + } + ], + "id": 6157, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7830, + 7831 + ], + "referencedDeclaration": 7831, + "src": "3200:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 6162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3200:94:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6163, + "nodeType": "ExpressionStatement", + "src": "3200:94:26" + } + ] + }, + "documentation": null, + "id": 6165, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_redeemUnderlying", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6143, + "name": "cToken", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "3078:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3078:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6145, + "name": "redeemTokens", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "3094:20:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6144, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3094:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3077:38:26" + }, + "returnParameters": { + "id": 6147, + "nodeType": "ParameterList", + "parameters": [], + "src": "3125:0:26" + }, + "scope": 6428, + "src": "3051:250:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6205, + "nodeType": "Block", + "src": "3403:434:26", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 6303, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5093:1:26", - "subdenomination": null, + "id": 6174, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6169, + "src": "3475:6:26", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "nodeType": "VariableDeclarationStatement", - "src": "5081:13:26" - }, - "loopExpression": { - "expression": { + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { "argumentTypes": null, - "id": 6311, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "5137:3:26", - "subExpression": { - "argumentTypes": null, - "id": 6310, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6302, - "src": "5137:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, + "id": 6175, + "name": "CEtherAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6167, + "src": "3485:13:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 6312, - "nodeType": "ExpressionStatement", - "src": "5137:3:26" + "src": "3475:23:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "nodeType": "ForStatement", - "src": "5076:222:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ + "falseBody": null, + "id": 6198, + "nodeType": "IfStatement", + "src": "3471:306:26", + "trueBody": { + "id": 6197, + "nodeType": "Block", + "src": "3500:277:26", + "statements": [ { - "argumentTypes": null, - "hexValue": "", - "id": 6343, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5475:2:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6340, - "name": "_protocolFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6253, - "src": "5451:12:26", + "assignments": [ + 6178 + ], + "declarations": [ + { + "constant": false, + "id": 6178, + "name": "underlying", + "nodeType": "VariableDeclaration", + "scope": 6197, + "src": "3514:18:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6177, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3514:7:26", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } - } - ], + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6184, + "initialValue": { + "argumentTypes": null, + "arguments": [], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], + "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6337, - "name": "_fee", + "id": 6180, + "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6251, - "src": "5441:4:26", + "referencedDeclaration": 6169, + "src": "3543:6:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6334, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6249, - "src": "5428:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 6332, - "name": "totalEthAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6299, - "src": "5409:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 7671, - "src": "5409:18:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 6335, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5409:27:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6336, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 7671, - "src": "5409:31:26", + "id": 6179, + "name": "ICToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "3535:7:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", + "typeString": "type(contract ICToken)" } }, - "id": 6338, + "id": 6181, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5409:37:26", + "src": "3535:15:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICToken_$858", + "typeString": "contract ICToken" + } + }, + "id": 6182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "underlying", + "nodeType": "MemberAccess", + "referencedDeclaration": 809, + "src": "3535:26:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 6183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3535:28:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3514:49:26" + }, + { + "assignments": [ + 6186 + ], + "declarations": [ + { + "constant": false, + "id": 6186, + "name": "ethAmount", + "nodeType": "VariableDeclaration", + "scope": 6197, + "src": "3621:17:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6185, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3621:7:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 6339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 7671, - "src": "5409:41:26", + "value": null, + "visibility": "internal" + } + ], + "id": 6191, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6188, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6178, + "src": "3662:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6189, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6171, + "src": "3674:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6187, + "name": "_getEthToTokenOutput", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5169, + "src": "3641:20:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256) view returns (uint256)" } }, - "id": 6341, + "id": 6190, "isConstant": false, "isLValue": false, "isPure": false, @@ -15051,94 +11547,163 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5409:55:26", + "src": "3641:40:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], + }, + "nodeType": "VariableDeclarationStatement", + "src": "3621:60:26" + }, + { "expression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { + "arguments": [ + { "argumentTypes": null, - "id": 6325, - "name": "epCalldata", + "id": 6193, + "name": "underlying", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6259, - "src": "5358:10:26", + "referencedDeclaration": 6178, + "src": "3744:10:26", "typeDescriptions": { - "typeIdentifier": "t_struct$_ExitPositionCalldata_$5935_memory_ptr", - "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 6329, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "exitUserAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 5926, - "src": "5358:26:26", + { + "argumentTypes": null, + "id": 6194, + "name": "ethAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6186, + "src": "3756:9:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6192, + "name": "_ethToToken", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4959, + 4988 + ], + "referencedDeclaration": 4959, + "src": "3732:11:26", "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256) returns (uint256)" } }, - "id": 6330, + "id": 6195, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5358:31:26", + "names": [], + "nodeType": "FunctionCall", + "src": "3732:34:26", "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6331, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5358:37:26", + "id": 6196, + "nodeType": "ExpressionStatement", + "src": "3732:34:26" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6200, + "name": "CEtherAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6167, + "src": "3800:13:26", "typeDescriptions": { - "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", - "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 6342, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5358:116:26", + { + "argumentTypes": null, + "id": 6201, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6169, + "src": "3815:6:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6202, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6171, + "src": "3823:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6199, + "name": "_repayBorrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6141, + "src": "3787:12:26", "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" } }, - "id": 6344, + "id": 6203, "isConstant": false, "isLValue": false, "isPure": false, @@ -15146,76 +11711,51 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5358:120:26", + "src": "3787:43:26", "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 6345, + "id": 6204, "nodeType": "ExpressionStatement", - "src": "5358:120:26" + "src": "3787:43:26" } ] }, "documentation": null, - "id": 6347, + "id": 6206, "implemented": true, "kind": "function", "modifiers": [], - "name": "exitPositionsPostLoan", + "name": "_repayDebt", "nodeType": "FunctionDefinition", "parameters": { - "id": 6256, + "id": 6172, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6249, - "name": "_amount", - "nodeType": "VariableDeclaration", - "scope": 6347, - "src": "4409:15:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6248, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4409:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, + "parameters": [ { "constant": false, - "id": 6251, - "name": "_fee", + "id": 6167, + "name": "CEtherAddress", "nodeType": "VariableDeclaration", - "scope": 6347, - "src": "4434:12:26", + "scope": 6206, + "src": "3327:21:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 6250, - "name": "uint256", + "id": 6166, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "4434:7:26", + "src": "3327:7:26", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, @@ -15223,25 +11763,26 @@ }, { "constant": false, - "id": 6253, - "name": "_protocolFee", + "id": 6169, + "name": "cToken", "nodeType": "VariableDeclaration", - "scope": 6347, - "src": "4456:20:26", + "scope": 6206, + "src": "3350:14:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 6252, - "name": "uint256", + "id": 6168, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "4456:7:26", + "src": "3350:7:26", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, @@ -15249,101 +11790,80 @@ }, { "constant": false, - "id": 6255, - "name": "_params", + "id": 6171, + "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6347, - "src": "4486:22:26", + "scope": 6206, + "src": "3366:14:26", "stateVariable": false, - "storageLocation": "calldata", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 6254, - "name": "bytes", + "id": 6170, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4486:5:26", + "src": "3366:7:26", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "4399:115:26" + "src": "3326:55:26" }, "returnParameters": { - "id": 6257, + "id": 6173, "nodeType": "ParameterList", "parameters": [], - "src": "4524:0:26" + "src": "3403:0:26" }, - "scope": 6539, - "src": "4369:1116:26", + "scope": 6428, + "src": "3307:530:26", "stateMutability": "nonpayable", "superFunction": null, - "visibility": "external" + "visibility": "internal" }, { "body": { - "id": 6414, + "id": 6242, "nodeType": "Block", - "src": "5742:1063:26", + "src": "3984:260:26", "statements": [ { - "assignments": [ - 6361 - ], - "declarations": [ - { - "constant": false, - "id": 6361, - "name": "addressRegistry", - "nodeType": "VariableDeclaration", - "scope": 6414, - "src": "5752:31:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - }, - "typeName": { - "contractScope": null, - "id": 6360, - "name": "AddressRegistry", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, - "src": "5752:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6365, - "initialValue": { + "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6363, - "name": "addressRegistryAddress", + "id": 6218, + "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6355, - "src": "5815:22:26", + "referencedDeclaration": 6210, + "src": "4037:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } + }, + { + "argumentTypes": null, + "id": 6219, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6212, + "src": "4045:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { @@ -15351,83 +11871,168 @@ { "typeIdentifier": "t_address", "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 6362, - "name": "AddressRegistry", + "id": 6217, + "name": "_redeemUnderlying", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, - "src": "5786:15:26", + "referencedDeclaration": 6165, + "src": "4019:17:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", - "typeString": "type(contract AddressRegistry)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" } }, - "id": 6364, + "id": 6220, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5786:61:26", + "src": "4019:33:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "nodeType": "VariableDeclarationStatement", - "src": "5752:95:26" + "id": 6221, + "nodeType": "ExpressionStatement", + "src": "4019:33:26" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6222, + "name": "cToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6210, + "src": "4067:6:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 6223, + "name": "CEtherAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6208, + "src": "4077:13:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4067:23:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 6228, + "nodeType": "IfStatement", + "src": "4063:67:26", + "trueBody": { + "id": 6227, + "nodeType": "Block", + "src": "4092:38:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6225, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6212, + "src": "4113:6:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6216, + "id": 6226, + "nodeType": "Return", + "src": "4106:13:26" + } + ] + } }, { "assignments": [ - 6367 + 6230 ], "declarations": [ { "constant": false, - "id": 6367, - "name": "addressAndExecuteOperationCalldataParams", + "id": 6230, + "name": "underlying", "nodeType": "VariableDeclaration", - "scope": 6414, - "src": "5912:53:26", + "scope": 6242, + "src": "4140:18:26", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 6366, - "name": "bytes", + "id": 6229, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "5912:5:26", + "src": "4140:7:26", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "id": 6376, + "id": 6236, "initialValue": { "argumentTypes": null, - "arguments": [ - { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6372, - "name": "dedgeExitManagerAddress", + "id": 6232, + "name": "cToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6351, - "src": "6022:23:26", + "referencedDeclaration": 6210, + "src": "4169:6:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15441,100 +12046,119 @@ "typeString": "address" } ], - "expression": { - "argumentTypes": null, - "id": 6370, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "6011:3:26", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 6371, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6011:10:26", + "id": 6231, + "name": "ICToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "4161:7:26", "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" + "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", + "typeString": "type(contract ICToken)" } }, - "id": 6373, + "id": 6233, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6011:35:26", + "src": "4161:15:26", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeIdentifier": "t_contract$_ICToken_$858", + "typeString": "contract ICToken" + } + }, + "id": 6234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "underlying", + "nodeType": "MemberAccess", + "referencedDeclaration": 809, + "src": "4161:26:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 6235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4161:28:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4140:49:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6238, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6230, + "src": "4218:10:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { "argumentTypes": null, - "id": 6374, - "name": "executeOperationCalldataParams", + "id": 6239, + "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6357, - "src": "6060:30:26", + "referencedDeclaration": 6212, + "src": "4230:6:26", "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeIdentifier": "t_address", + "typeString": "address" }, { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "expression": { - "argumentTypes": null, - "id": 6368, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7892, - "src": "5968:3:26", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 6369, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5968:29:26", + "id": 6237, + "name": "_tokenToEth", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5006, + 5045 + ], + "referencedDeclaration": 5006, + "src": "4206:11:26", "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256) returns (uint256)" } }, - "id": 6375, + "id": 6240, "isConstant": false, "isLValue": false, "isPure": false, @@ -15542,267 +12166,357 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5968:132:26", + "src": "4206:31:26", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "nodeType": "VariableDeclarationStatement", - "src": "5912:188:26" + "functionReturnParameters": 6216, + "id": 6241, + "nodeType": "Return", + "src": "4199:38:26" + } + ] + }, + "documentation": null, + "id": 6243, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_retrieveCollateral", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6208, + "name": "CEtherAddress", + "nodeType": "VariableDeclaration", + "scope": 6243, + "src": "3881:21:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3881:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6210, + "name": "cToken", + "nodeType": "VariableDeclaration", + "scope": 6243, + "src": "3912:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3912:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" }, + { + "constant": false, + "id": 6212, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 6243, + "src": "3936:14:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6211, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3936:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3871:85:26" + }, + "returnParameters": { + "id": 6216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6215, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6243, + "src": "3975:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3975:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3974:9:26" + }, + "scope": 6428, + "src": "3843:401:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6358, + "nodeType": "Block", + "src": "4405:1152:26", + "statements": [ { "assignments": [ - 6378 + 6255 ], "declarations": [ { "constant": false, - "id": 6378, - "name": "lendingPool", + "id": 6255, + "name": "epCalldata", "nodeType": "VariableDeclaration", - "scope": 6414, - "src": "6111:24:26", + "scope": 6358, + "src": "4451:38:26", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILendingPool_$546", - "typeString": "contract ILendingPool" + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata" }, "typeName": { "contractScope": null, - "id": 6377, - "name": "ILendingPool", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 546, - "src": "6111:12:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILendingPool_$546", - "typeString": "contract ILendingPool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6388, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 6381, - "name": "addressRegistry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6361, - "src": "6211:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - } - }, - "id": 6382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "AaveLendingPoolAddressProviderAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 7573, - "src": "6211:53:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" - } - }, - "id": 6383, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6211:55:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6380, - "name": "ILendingPoolAddressesProvider", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 659, - "src": "6164:29:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ILendingPoolAddressesProvider_$659_$", - "typeString": "type(contract ILendingPoolAddressesProvider)" - } - }, - "id": 6384, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6164:116:26", + "id": 6254, + "name": "ExitPositionCalldata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5945, + "src": "4451:20:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_storage_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6262, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6258, + "name": "_params", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6251, + "src": "4516:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 6259, + "name": "ExitPositionCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5945, + "src": "4538:20:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$659", - "typeString": "contract ILendingPoolAddressesProvider" + "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5945_storage_ptr_$", + "typeString": "type(struct DedgeExitManager.ExitPositionCalldata storage pointer)" } - }, - "id": 6385, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getLendingPool", - "nodeType": "MemberAccess", - "referencedDeclaration": 553, - "src": "6164:148:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" } - }, - "id": 6386, + ], + "id": 6260, "isConstant": false, + "isInlineArray": false, "isLValue": false, - "isPure": false, - "kind": "functionCall", + "isPure": true, "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6164:150:26", + "nodeType": "TupleExpression", + "src": "4537:22:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5945_storage_ptr_$", + "typeString": "type(struct DedgeExitManager.ExitPositionCalldata storage pointer)" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_type$_t_struct$_ExitPositionCalldata_$5945_storage_ptr_$", + "typeString": "type(struct DedgeExitManager.ExitPositionCalldata storage pointer)" } ], - "id": 6379, - "name": "ILendingPool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "6138:12:26", + "expression": { + "argumentTypes": null, + "id": 6256, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "4492:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4492:10:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ILendingPool_$546_$", - "typeString": "type(contract ILendingPool)" + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" } }, - "id": 6387, + "id": 6261, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6138:186:26", + "src": "4492:77:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILendingPool_$546", - "typeString": "contract ILendingPool" + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "6111:213:26" + "src": "4451:118:26" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6390, - "name": "dacProxyAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6353, - "src": "6398:15:26", + "assignments": [ + 6264 + ], + "declarations": [ + { + "constant": false, + "id": 6264, + "name": "addressRegistry", + "nodeType": "VariableDeclaration", + "scope": 6358, + "src": "4580:31:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" + }, + "typeName": { + "contractScope": null, + "id": 6263, + "name": "AddressRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7550, + "src": "4580:15:26", "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" } }, + "value": null, + "visibility": "internal" + } + ], + "id": 6269, + "initialValue": { + "argumentTypes": null, + "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6392, - "name": "lendingPool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6378, - "src": "6423:11:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILendingPool_$546", - "typeString": "contract ILendingPool" - } - } - ], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ILendingPool_$546", - "typeString": "contract ILendingPool" - } - ], - "id": 6391, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6415:7:26", + "argumentTypes": null, + "id": 6266, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "4643:10:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } }, - "id": 6393, + "id": 6267, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "kind": "typeConversion", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6415:20:26", + "memberName": "addressRegistryAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 5938, + "src": "4643:33:26", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -15811,181 +12525,106 @@ ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, { "typeIdentifier": "t_address", "typeString": "address" } ], - "id": 6389, - "name": "_proxyGuardPermit", + "id": 6265, + "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5976, - "src": "6380:17:26", + "referencedDeclaration": 7550, + "src": "4614:15:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", - "typeString": "function (address payable,address)" + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", + "typeString": "type(contract AddressRegistry)" } }, - "id": 6394, + "id": 6268, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6380:56:26", + "src": "4614:72:26", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" } }, - "id": 6395, - "nodeType": "ExpressionStatement", - "src": "6380:56:26" + "nodeType": "VariableDeclarationStatement", + "src": "4580:106:26" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6399, - "name": "dacProxyAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6353, - "src": "6529:15:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 6400, - "name": "addressRegistry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6361, - "src": "6558:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - } - }, - "id": 6401, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "AaveEthAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 7576, - "src": "6558:30:26", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" - } - }, - "id": 6402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6558:32:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 6403, - "name": "totalEthDebtAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6349, - "src": "6604:18:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "assignments": [ + 6271 + ], + "declarations": [ + { + "constant": false, + "id": 6271, + "name": "CEtherAddress", + "nodeType": "VariableDeclaration", + "scope": 6358, + "src": "4696:21:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - { - "argumentTypes": null, - "id": 6404, - "name": "addressAndExecuteOperationCalldataParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6367, - "src": "6636:40:26", + "typeName": { + "id": 6270, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4696:7:26", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { "typeIdentifier": "t_address", "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" } - ], + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6275, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6396, - "name": "lendingPool", + "id": 6272, + "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6378, - "src": "6494:11:26", + "referencedDeclaration": 6264, + "src": "4720:15:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_ILendingPool_$546", - "typeString": "contract ILendingPool" + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" } }, - "id": 6398, + "id": 6273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "flashLoan", + "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 442, - "src": "6494:21:26", + "referencedDeclaration": 7510, + "src": "4720:29:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory) external" + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" } }, - "id": 6405, + "id": 6274, "isConstant": false, "isLValue": false, "isPure": false, @@ -15993,1719 +12632,2135 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6494:192:26", + "src": "4720:31:26", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 6406, - "nodeType": "ExpressionStatement", - "src": "6494:192:26" + "nodeType": "VariableDeclarationStatement", + "src": "4696:55:26" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6408, - "name": "dacProxyAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6353, - "src": "6760:15:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, + "body": { + "id": 6302, + "nodeType": "Block", + "src": "4867:178:26", + "statements": [ { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6289, + "name": "CEtherAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6271, + "src": "4909:13:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6290, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "4940:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } + }, + "id": 6291, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "debtMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5941, + "src": "4940:21:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory[] memory" + } + }, + "id": 6293, + "indexExpression": { + "argumentTypes": null, + "id": 6292, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6277, + "src": "4962:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4940:24:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DebtMarket_$5929_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory" + } + }, + "id": 6294, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "cToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 5926, + "src": "4940:31:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6295, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "4989:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } + }, + "id": 6296, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "debtMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5941, + "src": "4989:21:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory[] memory" + } + }, + "id": 6298, + "indexExpression": { + "argumentTypes": null, + "id": 6297, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6277, + "src": "5011:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4989:24:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DebtMarket_$5929_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory" + } + }, + "id": 6299, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 5928, + "src": "4989:31:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6288, + "name": "_repayDebt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6206, + "src": "4881:10:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 6300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4881:153:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6301, + "nodeType": "ExpressionStatement", + "src": "4881:153:26" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6280, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6277, + "src": "4828:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6410, - "name": "lendingPool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6378, - "src": "6785:11:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ILendingPool_$546", - "typeString": "contract ILendingPool" - } - } - ], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ILendingPool_$546", - "typeString": "contract ILendingPool" - } - ], - "id": 6409, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6777:7:26", + "argumentTypes": null, + "id": 6281, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "4832:10:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } }, - "id": 6411, + "id": 6282, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "kind": "typeConversion", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6777:20:26", + "memberName": "debtMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5941, + "src": "4832:21:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_struct$_DebtMarket_$5929_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.DebtMarket memory[] memory" } - ], - "id": 6407, - "name": "_proxyGuardForbid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6017, - "src": "6742:17:26", + }, + "id": 6283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4832:28:26", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", - "typeString": "function (address payable,address)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6742:56:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6413, - "nodeType": "ExpressionStatement", - "src": "6742:56:26" - } - ] - }, - "documentation": null, - "id": 6415, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "exitPositions", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6358, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6349, - "name": "totalEthDebtAmount", - "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5523:26:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6348, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5523:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6351, - "name": "dedgeExitManagerAddress", - "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5559:31:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6350, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5559:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6353, - "name": "dacProxyAddress", - "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5600:31:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 6352, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5600:15:26", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6355, - "name": "addressRegistryAddress", - "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5641:30:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6354, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5641:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6357, - "name": "executeOperationCalldataParams", - "nodeType": "VariableDeclaration", - "scope": 6415, - "src": "5681:45:26", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 6356, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5681:5:26", + "src": "4828:32:26", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5513:219:26" - }, - "returnParameters": { - "id": 6359, - "nodeType": "ParameterList", - "parameters": [], - "src": "5742:0:26" - }, - "scope": 6539, - "src": "5491:1314:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - { - "body": { - "id": 6537, - "nodeType": "Block", - "src": "7072:988:26", - "statements": [ - { - "assignments": [ - 6431 - ], - "declarations": [ - { - "constant": false, - "id": 6431, - "name": "addressRegistry", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7082:31:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - }, - "typeName": { - "contractScope": null, - "id": 6430, - "name": "AddressRegistry", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, - "src": "7082:15:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - } - }, - "value": null, - "visibility": "internal" + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "id": 6435, - "initialValue": { - "argumentTypes": null, - "arguments": [ + }, + "id": 6303, + "initializationExpression": { + "assignments": [ + 6277 + ], + "declarations": [ { - "argumentTypes": null, - "id": 6433, - "name": "addressRegistryAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6417, - "src": "7145:22:26", + "constant": false, + "id": 6277, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 6303, + "src": "4813:9:26", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6276, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4813:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" } ], + "id": 6279, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 6278, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4825:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4813:13:26" + }, + "loopExpression": { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + "argumentTypes": null, + "id": 6286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4862:3:26", + "subExpression": { + "argumentTypes": null, + "id": 6285, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6277, + "src": "4862:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 6432, - "name": "AddressRegistry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7628, - "src": "7116:15:26", + }, "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", - "typeString": "type(contract AddressRegistry)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7116:61:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" - } + "id": 6287, + "nodeType": "ExpressionStatement", + "src": "4862:3:26" }, - "nodeType": "VariableDeclarationStatement", - "src": "7082:95:26" + "nodeType": "ForStatement", + "src": "4808:237:26" }, { "assignments": [ - 6437 + 6305 ], "declarations": [ { "constant": false, - "id": 6437, - "name": "comptroller", + "id": 6305, + "name": "totalEthAmount", "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7188:24:26", + "scope": 6358, + "src": "5055:22:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IComptroller_$1096", - "typeString": "contract IComptroller" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "contractScope": null, - "id": 6436, - "name": "IComptroller", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1096, - "src": "7188:12:26", + "id": 6304, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5055:7:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_IComptroller_$1096", - "typeString": "contract IComptroller" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "id": 6443, - "initialValue": { - "argumentTypes": null, - "arguments": [ + "id": 6306, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "5055:22:26" + }, + { + "body": { + "id": 6335, + "nodeType": "Block", + "src": "5152:217:26", + "statements": [ { - "argumentTypes": null, - "arguments": [], "expression": { - "argumentTypes": [], - "expression": { + "argumentTypes": null, + "id": 6333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { "argumentTypes": null, - "id": 6439, - "name": "addressRegistry", + "id": 6319, + "name": "totalEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6431, - "src": "7228:15:26", + "referencedDeclaration": 6305, + "src": "5166:14:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6321, + "name": "CEtherAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6271, + "src": "5221:13:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6322, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "5252:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } + }, + "id": 6323, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5944, + "src": "5252:27:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory[] memory" + } + }, + "id": 6325, + "indexExpression": { + "argumentTypes": null, + "id": 6324, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6308, + "src": "5280:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5252:30:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CollateralMarket_$5934_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory" + } + }, + "id": 6326, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "cToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 5931, + "src": "5252:37:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6327, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "5307:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } + }, + "id": 6328, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5944, + "src": "5307:27:26", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory[] memory" + } + }, + "id": 6330, + "indexExpression": { + "argumentTypes": null, + "id": 6329, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6308, + "src": "5335:1:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5307:30:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CollateralMarket_$5934_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory" + } + }, + "id": 6331, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 5933, + "src": "5307:37:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6320, + "name": "_retrieveCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6243, + "src": "5184:19:26", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,address,uint256) returns (uint256)" + } + }, + "id": 6332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5184:174:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", - "typeString": "contract AddressRegistry" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "CompoundComptrollerAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 7585, - "src": "7228:42:26", + "src": "5166:192:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7228:44:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6438, - "name": "IComptroller", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1096, - "src": "7215:12:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IComptroller_$1096_$", - "typeString": "type(contract IComptroller)" + "id": 6334, + "nodeType": "ExpressionStatement", + "src": "5166:192:26" } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 6442, + "id": 6315, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7215:58:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IComptroller_$1096", - "typeString": "contract IComptroller" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7188:85:26" - }, - { - "assignments": [ - 6447 - ], - "declarations": [ - { - "constant": false, - "id": 6447, - "name": "marketsEntered", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7284:31:26", - "stateVariable": false, - "storageLocation": "memory", + "leftExpression": { + "argumentTypes": null, + "id": 6311, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6308, + "src": "5107:1:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 6445, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7284:7:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6446, - "length": null, - "nodeType": "ArrayTypeName", - "src": "7284:9:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6452, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6450, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6419, - "src": "7342:5:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6448, - "name": "comptroller", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6437, - "src": "7318:11:26", + "expression": { + "argumentTypes": null, + "id": 6312, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "5111:10:26", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" + } + }, + "id": 6313, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralMarket", + "nodeType": "MemberAccess", + "referencedDeclaration": 5944, + "src": "5111:27:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_IComptroller_$1096", - "typeString": "contract IComptroller" + "typeIdentifier": "t_array$_t_struct$_CollateralMarket_$5934_memory_$dyn_memory", + "typeString": "struct DedgeExitManager.CollateralMarket memory[] memory" } }, - "id": 6449, + "id": 6314, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "getAssetsIn", + "memberName": "length", "nodeType": "MemberAccess", - "referencedDeclaration": 910, - "src": "7318:23:26", + "referencedDeclaration": null, + "src": "5111:34:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$", - "typeString": "function (address) view external returns (address[] memory)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6451, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7318:30:26", + "src": "5107:38:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "VariableDeclarationStatement", - "src": "7284:64:26" - }, - { - "assignments": [ - 6454 - ], - "declarations": [ - { - "constant": false, - "id": 6454, - "name": "curMarket", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7359:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6453, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7359:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6455, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7359:17:26" - }, - { - "assignments": [ - 6457 - ], - "declarations": [ - { - "constant": false, - "id": 6457, - "name": "curCollateral", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7386:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6456, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7386:4:26", + "id": 6336, + "initializationExpression": { + "assignments": [ + 6308 + ], + "declarations": [ + { + "constant": false, + "id": 6308, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 6336, + "src": "5092:9:26", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6458, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7386:18:26" - }, - { - "assignments": [ - 6460 - ], - "declarations": [ - { - "constant": false, - "id": 6460, - "name": "curCollateralI", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7414:19:26", - "stateVariable": false, - "storageLocation": "default", + }, + "typeName": { + "id": 6307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5092:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6310, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 6309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5104:1:26", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "typeName": { - "id": 6459, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7414:4:26", + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5092:13:26" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 6317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5147:3:26", + "subExpression": { + "argumentTypes": null, + "id": 6316, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6308, + "src": "5147:1:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "value": null, - "visibility": "internal" - } - ], - "id": 6461, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7414:19:26" - }, - { - "assignments": [ - 6463 - ], - "declarations": [ - { - "constant": false, - "id": 6463, - "name": "curDebt", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7443:12:26", - "stateVariable": false, - "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - "typeName": { - "id": 6462, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7443:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6464, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7443:12:26" + } + }, + "id": 6318, + "nodeType": "ExpressionStatement", + "src": "5147:3:26" + }, + "nodeType": "ForStatement", + "src": "5087:282:26" }, { - "assignments": [ - 6466 - ], - "declarations": [ - { - "constant": false, - "id": 6466, - "name": "curDebtI", - "nodeType": "VariableDeclaration", - "scope": 6537, - "src": "7465:13:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6465, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7465:4:26", + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "", + "id": 6355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5547:2:26", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6467, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7465:13:26" - }, - { - "body": { - "id": 6535, - "nodeType": "Block", - "src": "7538:516:26", - "statements": [ - { - "expression": { + ], + "arguments": [ + { "argumentTypes": null, - "id": 6483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6479, - "name": "curMarket", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7552:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6480, - "name": "marketsEntered", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6447, - "src": "7564:14:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6482, - "indexExpression": { + "arguments": [ + { "argumentTypes": null, - "id": 6481, - "name": "i", + "id": 6352, + "name": "_protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6469, - "src": "7579:1:26", + "referencedDeclaration": 6249, + "src": "5523:12:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7564:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7552:29:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6484, - "nodeType": "ExpressionStatement", - "src": "7552:29:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 6492, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6485, - "name": "curDebt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6463, - "src": "7595:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ + ], + "expression": { + "argumentTypes": [ { - "argumentTypes": null, - "id": 6490, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6419, - "src": "7645:5:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], "expression": { - "argumentTypes": [ + "argumentTypes": null, + "arguments": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "argumentTypes": null, + "id": 6349, + "name": "_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6247, + "src": "5513:4:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { - "argumentTypes": null, - "arguments": [ + "argumentTypes": [ { - "argumentTypes": null, - "id": 6487, - "name": "curMarket", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7613:9:26", + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6346, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6245, + "src": "5500:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6344, + "name": "totalEthAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6305, + "src": "5481:14:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 7593, + "src": "5481:18:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } - ], - "id": 6486, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "7605:7:26", + }, + "id": 6347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5481:27:26", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6488, + "id": 6348, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7605:18:26", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 7593, + "src": "5481:31:26", "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 6489, + "id": 6350, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "borrowBalanceCurrent", - "nodeType": "MemberAccess", - "referencedDeclaration": 790, - "src": "7605:39:26", + "names": [], + "nodeType": "FunctionCall", + "src": "5481:37:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 6491, + "id": 6351, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7605:46:26", + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 7593, + "src": "5481:41:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "src": "7595:56:26", + "id": 6353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5481:55:26", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - }, - "id": 6493, - "nodeType": "ExpressionStatement", - "src": "7595:56:26" - }, - { + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], "expression": { "argumentTypes": null, - "id": 6501, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6494, - "name": "curCollateral", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6457, - "src": "7665:13:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { + "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6499, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6419, - "src": "7720:5:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6496, - "name": "curMarket", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7689:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6495, - "name": "ICToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 858, - "src": "7681:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ICToken_$858_$", - "typeString": "type(contract ICToken)" - } - }, - "id": 6497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7681:18:26", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ICToken_$858", - "typeString": "contract ICToken" - } - }, - "id": 6498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOfUnderlying", - "nodeType": "MemberAccess", - "referencedDeclaration": 804, - "src": "7681:38:26", + "argumentTypes": null, + "id": 6337, + "name": "epCalldata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6255, + "src": "5430:10:26", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + "typeIdentifier": "t_struct$_ExitPositionCalldata_$5945_memory_ptr", + "typeString": "struct DedgeExitManager.ExitPositionCalldata memory" } }, - "id": 6500, + "id": 6341, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7681:45:26", + "memberName": "exitUserAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 5936, + "src": "5430:26:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "7665:61:26", + "id": 6342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5430:31:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 6502, - "nodeType": "ExpressionStatement", - "src": "7665:61:26" + "id": 6343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5430:37:26", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", + "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" + } + }, + "id": 6354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5430:116:26", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 6356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5430:120:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "id": 6357, + "nodeType": "ExpressionStatement", + "src": "5430:120:26" + } + ] + }, + "documentation": null, + "id": 6359, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "exitPositionsPostLoan", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6245, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "4290:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4290:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6247, + "name": "_fee", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "4315:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4315:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6249, + "name": "_protocolFee", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "4337:20:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6248, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4337:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6251, + "name": "_params", + "nodeType": "VariableDeclaration", + "scope": 6359, + "src": "4367:22:26", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6250, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4367:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4280:115:26" + }, + "returnParameters": { + "id": 6253, + "nodeType": "ParameterList", + "parameters": [], + "src": "4405:0:26" + }, + "scope": 6428, + "src": "4250:1307:26", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 6426, + "nodeType": "Block", + "src": "5814:1063:26", + "statements": [ + { + "assignments": [ + 6373 + ], + "declarations": [ + { + "constant": false, + "id": 6373, + "name": "addressRegistry", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "5824:31:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" }, + "typeName": { + "contractScope": null, + "id": 6372, + "name": "AddressRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 7550, + "src": "5824:15:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6377, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6503, - "name": "curCollateral", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6457, - "src": "7745:13:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 6504, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7761:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7745:17:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 6516, - "nodeType": "IfStatement", - "src": "7741:135:26", - "trueBody": { - "id": 6515, - "nodeType": "Block", - "src": "7764:112:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 6510, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6506, - "name": "collateralAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6428, - "src": "7782:17:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6508, - "indexExpression": { - "argumentTypes": null, - "id": 6507, - "name": "curCollateralI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6460, - "src": "7800:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7782:33:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 6509, - "name": "curMarket", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7818:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7782:45:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6511, - "nodeType": "ExpressionStatement", - "src": "7782:45:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 6513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "7845:16:26", - "subExpression": { - "argumentTypes": null, - "id": 6512, - "name": "curCollateralI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6460, - "src": "7845:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6514, - "nodeType": "ExpressionStatement", - "src": "7845:16:26" - } - ] + "argumentTypes": null, + "id": 6375, + "name": "addressRegistryAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6367, + "src": "5887:22:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6374, + "name": "AddressRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7550, + "src": "5858:15:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", + "typeString": "type(contract AddressRegistry)" + } + }, + "id": 6376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5858:61:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5824:95:26" + }, + { + "assignments": [ + 6379 + ], + "declarations": [ + { + "constant": false, + "id": 6379, + "name": "addressAndExecuteOperationCalldataParams", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "5984:53:26", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6378, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5984:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, + "value": null, + "visibility": "internal" + } + ], + "id": 6388, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6519, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "id": 6517, - "name": "curDebt", + "id": 6384, + "name": "dedgeExitManagerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6463, - "src": "7894:7:26", + "referencedDeclaration": 6363, + "src": "6094:23:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { "argumentTypes": null, - "hexValue": "30", - "id": 6518, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7904:1:26", - "subdenomination": null, + "id": 6382, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "6083:3:26", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } }, - "src": "7894:11:26", + "id": 6383, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6083:10:26", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" } }, - "falseBody": null, - "id": 6534, - "nodeType": "IfStatement", - "src": "7890:154:26", - "trueBody": { - "id": 6533, - "nodeType": "Block", - "src": "7907:137:26", - "statements": [ - { - "expression": { + "id": 6385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6083:35:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 6386, + "name": "executeOperationCalldataParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6369, + "src": "6132:30:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 6380, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "6040:3:26", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 6381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6040:29:26", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 6387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6040:132:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5984:188:26" + }, + { + "assignments": [ + 6390 + ], + "declarations": [ + { + "constant": false, + "id": 6390, + "name": "lendingPool", + "nodeType": "VariableDeclaration", + "scope": 6426, + "src": "6183:24:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILendingPool_$546", + "typeString": "contract ILendingPool" + }, + "typeName": { + "contractScope": null, + "id": 6389, + "name": "ILendingPool", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 546, + "src": "6183:12:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILendingPool_$546", + "typeString": "contract ILendingPool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6400, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "id": 6524, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6520, - "name": "debtAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6425, - "src": "7925:11:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6522, - "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { "argumentTypes": null, - "id": 6521, - "name": "curDebtI", + "id": 6393, + "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6466, - "src": "7937:8:26", + "referencedDeclaration": 6373, + "src": "6283:15:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" } }, + "id": 6394, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7925:21:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 6523, - "name": "curMarket", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6454, - "src": "7949:9:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7925:33:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6525, - "nodeType": "ExpressionStatement", - "src": "7925:33:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 6527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "7976:10:26", - "subExpression": { - "argumentTypes": null, - "id": 6526, - "name": "curDebtI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6466, - "src": "7976:8:26", + "lValueRequested": false, + "memberName": "AaveLendingPoolAddressProviderAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 7495, + "src": "6283:53:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" } }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6528, - "nodeType": "ExpressionStatement", - "src": "7976:10:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 6531, + "id": 6395, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6529, - "name": "ethDebtAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6422, - "src": "8005:13:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "id": 6530, - "name": "curDebt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6463, - "src": "8022:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8005:24:26", + "names": [], + "nodeType": "FunctionCall", + "src": "6283:55:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } - }, - "id": 6532, - "nodeType": "ExpressionStatement", - "src": "8005:24:26" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6392, + "name": "ILendingPoolAddressesProvider", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "6236:29:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILendingPoolAddressesProvider_$659_$", + "typeString": "type(contract ILendingPoolAddressesProvider)" + } + }, + "id": 6396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6236:116:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$659", + "typeString": "contract ILendingPoolAddressesProvider" } - ] + }, + "id": 6397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getLendingPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 553, + "src": "6236:148:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 6398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6236:150:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6391, + "name": "ILendingPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "6210:12:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ILendingPool_$546_$", + "typeString": "type(contract ILendingPool)" + } }, - "id": 6475, + "id": 6399, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6472, - "name": "i", + "names": [], + "nodeType": "FunctionCall", + "src": "6210:186:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILendingPool_$546", + "typeString": "contract ILendingPool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6183:213:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6402, + "name": "dacProxyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6365, + "src": "6470:15:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6404, + "name": "lendingPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6390, + "src": "6495:11:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILendingPool_$546", + "typeString": "contract ILendingPool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILendingPool_$546", + "typeString": "contract ILendingPool" + } + ], + "id": 6403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6487:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 6405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6487:20:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 6401, + "name": "_proxyGuardPermit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6469, - "src": "7506:1:26", + "referencedDeclaration": 5986, + "src": "6452:17:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", + "typeString": "function (address payable,address)" } }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, + "id": 6406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6452:56:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6407, + "nodeType": "ExpressionStatement", + "src": "6452:56:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6411, + "name": "dacProxyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6365, + "src": "6601:15:26", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 6412, + "name": "addressRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6373, + "src": "6630:15:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AddressRegistry_$7550", + "typeString": "contract AddressRegistry" + } + }, + "id": 6413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "AaveEthAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 7498, + "src": "6630:30:26", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 6414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6630:32:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6415, + "name": "totalEthDebtAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6361, + "src": "6676:18:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 6416, + "name": "addressAndExecuteOperationCalldataParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6379, + "src": "6708:40:26", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], "expression": { "argumentTypes": null, - "id": 6473, - "name": "marketsEntered", + "id": 6408, + "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6447, - "src": "7510:14:26", + "referencedDeclaration": 6390, + "src": "6566:11:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "typeIdentifier": "t_contract$_ILendingPool_$546", + "typeString": "contract ILendingPool" } }, - "id": 6474, + "id": 6410, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "length", + "memberName": "flashLoan", "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7510:21:26", + "referencedDeclaration": 442, + "src": "6566:21:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory) external" } }, - "src": "7506:25:26", + "id": 6417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6566:192:26", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 6536, - "initializationExpression": { - "assignments": [ - 6469 - ], - "declarations": [ + "id": 6418, + "nodeType": "ExpressionStatement", + "src": "6566:192:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "constant": false, - "id": 6469, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 6536, - "src": "7494:6:26", - "stateVariable": false, - "storageLocation": "default", + "argumentTypes": null, + "id": 6420, + "name": "dacProxyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6365, + "src": "6832:15:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6468, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "7494:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6422, + "name": "lendingPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6390, + "src": "6857:11:26", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ILendingPool_$546", + "typeString": "contract ILendingPool" + } } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ILendingPool_$546", + "typeString": "contract ILendingPool" + } + ], + "id": 6421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6849:7:26", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" }, - "value": null, - "visibility": "internal" + "id": 6423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6849:20:26", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 6471, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 6470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7503:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "7494:10:26" - }, - "loopExpression": { "expression": { - "argumentTypes": null, - "id": 6477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "7533:3:26", - "subExpression": { - "argumentTypes": null, - "id": 6476, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6469, - "src": "7533:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" } - }, + ], + "id": 6419, + "name": "_proxyGuardForbid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6027, + "src": "6814:17:26", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", + "typeString": "function (address payable,address)" } }, - "id": 6478, - "nodeType": "ExpressionStatement", - "src": "7533:3:26" + "id": 6424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6814:56:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "nodeType": "ForStatement", - "src": "7489:565:26" + "id": 6425, + "nodeType": "ExpressionStatement", + "src": "6814:56:26" } ] }, "documentation": null, - "id": 6538, + "id": 6427, "implemented": true, "kind": "function", "modifiers": [], - "name": "getExitPositionsData", + "name": "exitPositions", "nodeType": "FunctionDefinition", "parameters": { - "id": 6420, + "id": 6370, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6417, - "name": "addressRegistryAddress", + "id": 6361, + "name": "totalEthDebtAmount", "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "6841:30:26", + "scope": 6427, + "src": "5595:26:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 6416, - "name": "address", + "id": 6360, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6841:7:26", - "stateMutability": "nonpayable", + "src": "5595:7:26", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, @@ -17713,11 +14768,11 @@ }, { "constant": false, - "id": 6419, - "name": "owner", + "id": 6363, + "name": "dedgeExitManagerAddress", "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "6873:13:26", + "scope": 6427, + "src": "5631:31:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17725,10 +14780,10 @@ "typeString": "address" }, "typeName": { - "id": 6418, + "id": 6362, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6873:7:26", + "src": "5631:7:26", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -17737,35 +14792,29 @@ }, "value": null, "visibility": "internal" - } - ], - "src": "6840:47:26" - }, - "returnParameters": { - "id": 6429, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 6422, - "name": "ethDebtAmount", + "id": 6365, + "name": "dacProxyAddress", "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "6946:21:26", + "scope": 6427, + "src": "5672:31:26", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, "typeName": { - "id": 6421, - "name": "uint256", + "id": 6364, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "6946:7:26", + "src": "5672:15:26", + "stateMutability": "payable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "value": null, @@ -17773,36 +14822,26 @@ }, { "constant": false, - "id": 6425, - "name": "debtAddress", + "id": 6367, + "name": "addressRegistryAddress", "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "6981:28:26", + "scope": 6427, + "src": "5713:30:26", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "baseType": { - "id": 6423, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6981:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6424, - "length": null, - "nodeType": "ArrayTypeName", - "src": "6981:9:26", + "id": 6366, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5713:7:26", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, @@ -17810,56 +14849,51 @@ }, { "constant": false, - "id": 6428, - "name": "collateralAddress", + "id": 6369, + "name": "executeOperationCalldataParams", "nodeType": "VariableDeclaration", - "scope": 6538, - "src": "7023:34:26", + "scope": 6427, + "src": "5753:45:26", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" }, "typeName": { - "baseType": { - "id": 6426, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7023:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6427, - "length": null, - "nodeType": "ArrayTypeName", - "src": "7023:9:26", + "id": 6368, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5753:5:26", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "src": "6932:135:26" + "src": "5585:219:26" + }, + "returnParameters": { + "id": 6371, + "nodeType": "ParameterList", + "parameters": [], + "src": "5814:0:26" }, - "scope": 6539, - "src": "6811:1249:26", - "stateMutability": "view", + "scope": 6428, + "src": "5563:1314:26", + "stateMutability": "nonpayable", "superFunction": null, - "visibility": "public" + "visibility": "external" } ], - "scope": 6540, - "src": "690:7372:26" + "scope": 6429, + "src": "690:6189:26" } ], - "src": "65:7998:26" + "src": "65:6815:26" }, "compiler": { "name": "solc", @@ -17870,11 +14904,11 @@ "events": {}, "links": {}, "address": "0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb", - "transactionHash": "0xf9b5ab67bb2c1bbfeeda497bccb21e95c009d2824c1512049b089475089f90c1" + "transactionHash": "0xc0964b4e8492f115325605b0f72796b6abcb800ebc30f06483b643b68ebc39fd" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:19:27.821Z", + "updatedAt": "2020-04-03T04:49:15.471Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeGeneralManager.json b/packages/smart-contracts/artifacts/DedgeGeneralManager.json index 01e0a02..972216e 100644 --- a/packages/smart-contracts/artifacts/DedgeGeneralManager.json +++ b/packages/smart-contracts/artifacts/DedgeGeneralManager.json @@ -69,14 +69,14 @@ "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeGeneralManager.sol", "exportedSymbols": { "DedgeGeneralManager": [ - 6595 + 6484 ] }, - "id": 6596, + "id": 6485, "nodeType": "SourceUnit", "nodes": [ { - "id": 6541, + "id": 6430, "literals": [ "solidity", "0.5", @@ -88,9 +88,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol", "file": "../interfaces/IERC20.sol", - "id": 6542, + "id": 6431, "nodeType": "ImportDirective", - "scope": 6596, + "scope": 6485, "sourceUnit": 121, "src": "122:34:27", "symbolAliases": [], @@ -102,40 +102,40 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 6595, + "id": 6484, "linearizedBaseContracts": [ - 6595 + 6484 ], "name": "DedgeGeneralManager", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 6545, + "id": 6434, "nodeType": "Block", "src": "222:2:27", "statements": [] }, "documentation": null, - "id": 6546, + "id": 6435, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 6543, + "id": 6432, "nodeType": "ParameterList", "parameters": [], "src": "202:2:27" }, "returnParameters": { - "id": 6544, + "id": 6433, "nodeType": "ParameterList", "parameters": [], "src": "222:0:27" }, - "scope": 6595, + "scope": 6484, "src": "193:31:27", "stateMutability": "payable", "superFunction": null, @@ -143,31 +143,31 @@ }, { "body": { - "id": 6549, + "id": 6438, "nodeType": "Block", "src": "251:2:27", "statements": [] }, "documentation": null, - "id": 6550, + "id": 6439, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 6547, + "id": 6436, "nodeType": "ParameterList", "parameters": [], "src": "241:2:27" }, "returnParameters": { - "id": 6548, + "id": 6437, "nodeType": "ParameterList", "parameters": [], "src": "251:0:27" }, - "scope": 6595, + "scope": 6484, "src": "230:23:27", "stateMutability": "nonpayable", "superFunction": null, @@ -175,22 +175,22 @@ }, { "body": { - "id": 6572, + "id": 6461, "nodeType": "Block", "src": "319:125:27", "statements": [ { "assignments": [ - 6558, + 6447, null ], "declarations": [ { "constant": false, - "id": 6558, + "id": 6447, "name": "success", "nodeType": "VariableDeclaration", - "scope": 6572, + "scope": 6461, "src": "330:12:27", "stateVariable": false, "storageLocation": "default", @@ -199,7 +199,7 @@ "typeString": "bool" }, "typeName": { - "id": 6557, + "id": 6446, "name": "bool", "nodeType": "ElementaryTypeName", "src": "330:4:27", @@ -213,14 +213,14 @@ }, null ], - "id": 6566, + "id": 6455, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "", - "id": 6564, + "id": 6453, "isConstant": false, "isLValue": false, "isPure": true, @@ -246,11 +246,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6562, + "id": 6451, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6554, + "referencedDeclaration": 6443, "src": "369:6:27", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -269,18 +269,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6559, + "id": 6448, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6552, + "referencedDeclaration": 6441, "src": "348:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 6560, + "id": 6449, "isConstant": false, "isLValue": false, "isPure": false, @@ -294,7 +294,7 @@ "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 6561, + "id": 6450, "isConstant": false, "isLValue": false, "isPure": false, @@ -308,7 +308,7 @@ "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 6563, + "id": 6452, "isConstant": false, "isLValue": false, "isPure": false, @@ -322,7 +322,7 @@ "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 6565, + "id": 6454, "isConstant": false, "isLValue": false, "isPure": false, @@ -345,11 +345,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6568, + "id": 6457, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6558, + "referencedDeclaration": 6447, "src": "398:7:27", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -359,7 +359,7 @@ { "argumentTypes": null, "hexValue": "67656e2d6d67722d7472616e736665722d6574682d6661696c6564", - "id": 6569, + "id": 6458, "isConstant": false, "isLValue": false, "isPure": true, @@ -386,21 +386,21 @@ "typeString": "literal_string \"gen-mgr-transfer-eth-failed\"" } ], - "id": 6567, + "id": 6456, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "390:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6570, + "id": 6459, "isConstant": false, "isLValue": false, "isPure": false, @@ -414,29 +414,29 @@ "typeString": "tuple()" } }, - "id": 6571, + "id": 6460, "nodeType": "ExpressionStatement", "src": "390:47:27" } ] }, "documentation": null, - "id": 6573, + "id": 6462, "implemented": true, "kind": "function", "modifiers": [], "name": "transferETH", "nodeType": "FunctionDefinition", "parameters": { - "id": 6555, + "id": 6444, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6552, + "id": 6441, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 6573, + "scope": 6462, "src": "280:17:27", "stateVariable": false, "storageLocation": "default", @@ -445,7 +445,7 @@ "typeString": "address" }, "typeName": { - "id": 6551, + "id": 6440, "name": "address", "nodeType": "ElementaryTypeName", "src": "280:7:27", @@ -460,10 +460,10 @@ }, { "constant": false, - "id": 6554, + "id": 6443, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6573, + "scope": 6462, "src": "299:11:27", "stateVariable": false, "storageLocation": "default", @@ -472,7 +472,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6553, + "id": 6442, "name": "uint", "nodeType": "ElementaryTypeName", "src": "299:4:27", @@ -488,12 +488,12 @@ "src": "279:32:27" }, "returnParameters": { - "id": 6556, + "id": 6445, "nodeType": "ParameterList", "parameters": [], "src": "319:0:27" }, - "scope": 6595, + "scope": 6484, "src": "259:185:27", "stateMutability": "nonpayable", "superFunction": null, @@ -501,7 +501,7 @@ }, { "body": { - "id": 6593, + "id": 6482, "nodeType": "Block", "src": "534:141:27", "statements": [ @@ -514,11 +514,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6587, + "id": 6476, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6575, + "referencedDeclaration": 6464, "src": "595:9:27", "typeDescriptions": { "typeIdentifier": "t_address", @@ -527,11 +527,11 @@ }, { "argumentTypes": null, - "id": 6588, + "id": 6477, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6579, + "referencedDeclaration": 6468, "src": "606:6:27", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -555,11 +555,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6584, + "id": 6473, "name": "erc20Address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6577, + "referencedDeclaration": 6466, "src": "572:12:27", "typeDescriptions": { "typeIdentifier": "t_address", @@ -574,7 +574,7 @@ "typeString": "address" } ], - "id": 6583, + "id": 6472, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -585,7 +585,7 @@ "typeString": "type(contract IERC20)" } }, - "id": 6585, + "id": 6474, "isConstant": false, "isLValue": false, "isPure": false, @@ -599,7 +599,7 @@ "typeString": "contract IERC20" } }, - "id": 6586, + "id": 6475, "isConstant": false, "isLValue": false, "isPure": false, @@ -613,7 +613,7 @@ "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 6589, + "id": 6478, "isConstant": false, "isLValue": false, "isPure": false, @@ -630,7 +630,7 @@ { "argumentTypes": null, "hexValue": "67656e2d6d67722d7472616e736665727065726332302d6661696c6564", - "id": 6590, + "id": 6479, "isConstant": false, "isLValue": false, "isPure": true, @@ -657,21 +657,21 @@ "typeString": "literal_string \"gen-mgr-transferperc20-failed\"" } ], - "id": 6582, + "id": 6471, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "544:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6591, + "id": 6480, "isConstant": false, "isLValue": false, "isPure": false, @@ -685,29 +685,29 @@ "typeString": "tuple()" } }, - "id": 6592, + "id": 6481, "nodeType": "ExpressionStatement", "src": "544:124:27" } ] }, "documentation": null, - "id": 6594, + "id": 6483, "implemented": true, "kind": "function", "modifiers": [], "name": "transferERC20", "nodeType": "FunctionDefinition", "parameters": { - "id": 6580, + "id": 6469, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6575, + "id": 6464, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 6594, + "scope": 6483, "src": "473:17:27", "stateVariable": false, "storageLocation": "default", @@ -716,7 +716,7 @@ "typeString": "address" }, "typeName": { - "id": 6574, + "id": 6463, "name": "address", "nodeType": "ElementaryTypeName", "src": "473:7:27", @@ -731,10 +731,10 @@ }, { "constant": false, - "id": 6577, + "id": 6466, "name": "erc20Address", "nodeType": "VariableDeclaration", - "scope": 6594, + "scope": 6483, "src": "492:20:27", "stateVariable": false, "storageLocation": "default", @@ -743,7 +743,7 @@ "typeString": "address" }, "typeName": { - "id": 6576, + "id": 6465, "name": "address", "nodeType": "ElementaryTypeName", "src": "492:7:27", @@ -758,10 +758,10 @@ }, { "constant": false, - "id": 6579, + "id": 6468, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6594, + "scope": 6483, "src": "514:11:27", "stateVariable": false, "storageLocation": "default", @@ -770,7 +770,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6578, + "id": 6467, "name": "uint", "nodeType": "ElementaryTypeName", "src": "514:4:27", @@ -786,19 +786,19 @@ "src": "472:54:27" }, "returnParameters": { - "id": 6581, + "id": 6470, "nodeType": "ParameterList", "parameters": [], "src": "534:0:27" }, - "scope": 6595, + "scope": 6484, "src": "450:225:27", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 6596, + "scope": 6485, "src": "158:519:27" } ], @@ -808,14 +808,14 @@ "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeGeneralManager.sol", "exportedSymbols": { "DedgeGeneralManager": [ - 6595 + 6484 ] }, - "id": 6596, + "id": 6485, "nodeType": "SourceUnit", "nodes": [ { - "id": 6541, + "id": 6430, "literals": [ "solidity", "0.5", @@ -827,9 +827,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol", "file": "../interfaces/IERC20.sol", - "id": 6542, + "id": 6431, "nodeType": "ImportDirective", - "scope": 6596, + "scope": 6485, "sourceUnit": 121, "src": "122:34:27", "symbolAliases": [], @@ -841,40 +841,40 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 6595, + "id": 6484, "linearizedBaseContracts": [ - 6595 + 6484 ], "name": "DedgeGeneralManager", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 6545, + "id": 6434, "nodeType": "Block", "src": "222:2:27", "statements": [] }, "documentation": null, - "id": 6546, + "id": 6435, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 6543, + "id": 6432, "nodeType": "ParameterList", "parameters": [], "src": "202:2:27" }, "returnParameters": { - "id": 6544, + "id": 6433, "nodeType": "ParameterList", "parameters": [], "src": "222:0:27" }, - "scope": 6595, + "scope": 6484, "src": "193:31:27", "stateMutability": "payable", "superFunction": null, @@ -882,31 +882,31 @@ }, { "body": { - "id": 6549, + "id": 6438, "nodeType": "Block", "src": "251:2:27", "statements": [] }, "documentation": null, - "id": 6550, + "id": 6439, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 6547, + "id": 6436, "nodeType": "ParameterList", "parameters": [], "src": "241:2:27" }, "returnParameters": { - "id": 6548, + "id": 6437, "nodeType": "ParameterList", "parameters": [], "src": "251:0:27" }, - "scope": 6595, + "scope": 6484, "src": "230:23:27", "stateMutability": "nonpayable", "superFunction": null, @@ -914,22 +914,22 @@ }, { "body": { - "id": 6572, + "id": 6461, "nodeType": "Block", "src": "319:125:27", "statements": [ { "assignments": [ - 6558, + 6447, null ], "declarations": [ { "constant": false, - "id": 6558, + "id": 6447, "name": "success", "nodeType": "VariableDeclaration", - "scope": 6572, + "scope": 6461, "src": "330:12:27", "stateVariable": false, "storageLocation": "default", @@ -938,7 +938,7 @@ "typeString": "bool" }, "typeName": { - "id": 6557, + "id": 6446, "name": "bool", "nodeType": "ElementaryTypeName", "src": "330:4:27", @@ -952,14 +952,14 @@ }, null ], - "id": 6566, + "id": 6455, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "", - "id": 6564, + "id": 6453, "isConstant": false, "isLValue": false, "isPure": true, @@ -985,11 +985,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6562, + "id": 6451, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6554, + "referencedDeclaration": 6443, "src": "369:6:27", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1008,18 +1008,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6559, + "id": 6448, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6552, + "referencedDeclaration": 6441, "src": "348:9:27", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 6560, + "id": 6449, "isConstant": false, "isLValue": false, "isPure": false, @@ -1033,7 +1033,7 @@ "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 6561, + "id": 6450, "isConstant": false, "isLValue": false, "isPure": false, @@ -1047,7 +1047,7 @@ "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 6563, + "id": 6452, "isConstant": false, "isLValue": false, "isPure": false, @@ -1061,7 +1061,7 @@ "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 6565, + "id": 6454, "isConstant": false, "isLValue": false, "isPure": false, @@ -1084,11 +1084,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6568, + "id": 6457, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6558, + "referencedDeclaration": 6447, "src": "398:7:27", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1098,7 +1098,7 @@ { "argumentTypes": null, "hexValue": "67656e2d6d67722d7472616e736665722d6574682d6661696c6564", - "id": 6569, + "id": 6458, "isConstant": false, "isLValue": false, "isPure": true, @@ -1125,21 +1125,21 @@ "typeString": "literal_string \"gen-mgr-transfer-eth-failed\"" } ], - "id": 6567, + "id": 6456, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "390:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6570, + "id": 6459, "isConstant": false, "isLValue": false, "isPure": false, @@ -1153,29 +1153,29 @@ "typeString": "tuple()" } }, - "id": 6571, + "id": 6460, "nodeType": "ExpressionStatement", "src": "390:47:27" } ] }, "documentation": null, - "id": 6573, + "id": 6462, "implemented": true, "kind": "function", "modifiers": [], "name": "transferETH", "nodeType": "FunctionDefinition", "parameters": { - "id": 6555, + "id": 6444, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6552, + "id": 6441, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 6573, + "scope": 6462, "src": "280:17:27", "stateVariable": false, "storageLocation": "default", @@ -1184,7 +1184,7 @@ "typeString": "address" }, "typeName": { - "id": 6551, + "id": 6440, "name": "address", "nodeType": "ElementaryTypeName", "src": "280:7:27", @@ -1199,10 +1199,10 @@ }, { "constant": false, - "id": 6554, + "id": 6443, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6573, + "scope": 6462, "src": "299:11:27", "stateVariable": false, "storageLocation": "default", @@ -1211,7 +1211,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6553, + "id": 6442, "name": "uint", "nodeType": "ElementaryTypeName", "src": "299:4:27", @@ -1227,12 +1227,12 @@ "src": "279:32:27" }, "returnParameters": { - "id": 6556, + "id": 6445, "nodeType": "ParameterList", "parameters": [], "src": "319:0:27" }, - "scope": 6595, + "scope": 6484, "src": "259:185:27", "stateMutability": "nonpayable", "superFunction": null, @@ -1240,7 +1240,7 @@ }, { "body": { - "id": 6593, + "id": 6482, "nodeType": "Block", "src": "534:141:27", "statements": [ @@ -1253,11 +1253,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6587, + "id": 6476, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6575, + "referencedDeclaration": 6464, "src": "595:9:27", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1266,11 +1266,11 @@ }, { "argumentTypes": null, - "id": 6588, + "id": 6477, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6579, + "referencedDeclaration": 6468, "src": "606:6:27", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1294,11 +1294,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6584, + "id": 6473, "name": "erc20Address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6577, + "referencedDeclaration": 6466, "src": "572:12:27", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1313,7 +1313,7 @@ "typeString": "address" } ], - "id": 6583, + "id": 6472, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1324,7 +1324,7 @@ "typeString": "type(contract IERC20)" } }, - "id": 6585, + "id": 6474, "isConstant": false, "isLValue": false, "isPure": false, @@ -1338,7 +1338,7 @@ "typeString": "contract IERC20" } }, - "id": 6586, + "id": 6475, "isConstant": false, "isLValue": false, "isPure": false, @@ -1352,7 +1352,7 @@ "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 6589, + "id": 6478, "isConstant": false, "isLValue": false, "isPure": false, @@ -1369,7 +1369,7 @@ { "argumentTypes": null, "hexValue": "67656e2d6d67722d7472616e736665727065726332302d6661696c6564", - "id": 6590, + "id": 6479, "isConstant": false, "isLValue": false, "isPure": true, @@ -1396,21 +1396,21 @@ "typeString": "literal_string \"gen-mgr-transferperc20-failed\"" } ], - "id": 6582, + "id": 6471, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7797, + 7798 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7798, "src": "544:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6591, + "id": 6480, "isConstant": false, "isLValue": false, "isPure": false, @@ -1424,29 +1424,29 @@ "typeString": "tuple()" } }, - "id": 6592, + "id": 6481, "nodeType": "ExpressionStatement", "src": "544:124:27" } ] }, "documentation": null, - "id": 6594, + "id": 6483, "implemented": true, "kind": "function", "modifiers": [], "name": "transferERC20", "nodeType": "FunctionDefinition", "parameters": { - "id": 6580, + "id": 6469, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6575, + "id": 6464, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 6594, + "scope": 6483, "src": "473:17:27", "stateVariable": false, "storageLocation": "default", @@ -1455,7 +1455,7 @@ "typeString": "address" }, "typeName": { - "id": 6574, + "id": 6463, "name": "address", "nodeType": "ElementaryTypeName", "src": "473:7:27", @@ -1470,10 +1470,10 @@ }, { "constant": false, - "id": 6577, + "id": 6466, "name": "erc20Address", "nodeType": "VariableDeclaration", - "scope": 6594, + "scope": 6483, "src": "492:20:27", "stateVariable": false, "storageLocation": "default", @@ -1482,7 +1482,7 @@ "typeString": "address" }, "typeName": { - "id": 6576, + "id": 6465, "name": "address", "nodeType": "ElementaryTypeName", "src": "492:7:27", @@ -1497,10 +1497,10 @@ }, { "constant": false, - "id": 6579, + "id": 6468, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6594, + "scope": 6483, "src": "514:11:27", "stateVariable": false, "storageLocation": "default", @@ -1509,7 +1509,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6578, + "id": 6467, "name": "uint", "nodeType": "ElementaryTypeName", "src": "514:4:27", @@ -1525,19 +1525,19 @@ "src": "472:54:27" }, "returnParameters": { - "id": 6581, + "id": 6470, "nodeType": "ParameterList", "parameters": [], "src": "534:0:27" }, - "scope": 6595, + "scope": 6484, "src": "450:225:27", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 6596, + "scope": 6485, "src": "158:519:27" } ], @@ -1556,7 +1556,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:19:27.808Z", + "updatedAt": "2020-04-03T04:49:15.464Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeMakerManager.json b/packages/smart-contracts/artifacts/DedgeMakerManager.json index 3bea0e6..528e767 100644 --- a/packages/smart-contracts/artifacts/DedgeMakerManager.json +++ b/packages/smart-contracts/artifacts/DedgeMakerManager.json @@ -371,9 +371,9 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dink\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dart\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"getVaultCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ink\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"getVaultDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"debt\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeMakerManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdpId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"importMakerVault\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"importMakerVaultPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol\":\"DedgeMakerManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0x3c1fd10b8372a9605ad8c50f4412ec551c2a6cd1c766119a38d30b972285ace5\",\"urls\":[\"bzz-raw://6cab8f4140440f85d86faec88351efb196e3c628bc16b0cf808637efe6814e5a\",\"dweb:/ipfs/QmPKFwz4Aw4SoEZ9oXCdwexULcDaLX8HV3f3nEQXbskakU\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0x1fdd5a3473065d6f14bb74dd57431257d1a6b3d400472fe22e616665fb71d9fa\",\"urls\":[\"bzz-raw://9f75f98e1fcb3b0618bfc4d7e07dfa313250fb3e5012c5101e3e5589b013d6f7\",\"dweb:/ipfs/QmZduo9rqcHV9soppn4eJ9EM3UessLwTpBv3dcx5QWzyzj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol\":{\"keccak256\":\"0xc670eb42195a3be8cf8ea3d11f3afa457377bfd52382094f65c63182e679863f\",\"urls\":[\"bzz-raw://855acaff1c943a63987c31ee6db3362b6c85ab419046430eaf160a96c0dc70e4\",\"dweb:/ipfs/QmWEdWqVUfsYKrJcxVQ9sowhTGUsaoydpUWsQjHkFmAPHX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol\":{\"keccak256\":\"0x2f6d78b485392995fd2deb695a6983e82971feaf2ba629474d4ee0c5ee769614\",\"urls\":[\"bzz-raw://feca374d541b17754aecc30a9a5312de3ad406597df1d4c8b4f123bb8bca8036\",\"dweb:/ipfs/QmYdtfcTp4Dvozfa3PpLaWTxg8WnzQiie2cVnq5QPUD1CJ\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol\":{\"keccak256\":\"0x668fd43717315e1be5bf188d316d6a01e0560a42cde699a9b9d56b22436ddf1c\",\"urls\":[\"bzz-raw://082390efee5a477860b87da8f35543903746cf831fc209a39ddf06075e2438f9\",\"dweb:/ipfs/QmTVQdmTzZyLvwBX81ic73BUiCPwMaZEVEgMxomaC4UWXG\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xa93ae0a65d7000bbef6d0a31cd3c2d6f79e37e13db19f127b53e6e707f0507b4\",\"urls\":[\"bzz-raw://931af9f9ea15aade3685b204a6637b1902296f06b4128eb57a066e7ab8929026\",\"dweb:/ipfs/QmSauiKUjz6sXdcWSwvjzwNsr8Gvbj38mh97ikks4dwfbR\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50613b15806100206000396000f3fe6080604052600436106100a75760003560e01c80636d68b70b116100645780636d68b70b146101db57806396e8d72c14610204578063ba727a951461022d578063bcd6deec14610256578063c56167c61461027f578063ddd927b2146102a8576100a7565b8063131fb710146100a95780631558b048146100d25780631d10f231146100fb5780633edec14e1461012457806361d2d7dc146101615780636aa3ee111461019e575b005b3480156100b557600080fd5b506100d060048036036100cb9190810190612caf565b6102d1565b005b3480156100de57600080fd5b506100f960048036036100f49190810190612ee1565b6106ce565b005b34801561010757600080fd5b50610122600480360361011d9190810190612e92565b610743565b005b34801561013057600080fd5b5061014b60048036036101469190810190612e56565b6107b5565b6040516101589190613763565b60405180910390f35b34801561016d57600080fd5b5061018860048036036101839190810190612e56565b6109f7565b6040516101959190613763565b60405180910390f35b3480156101aa57600080fd5b506101c560048036036101c09190810190612e07565b610c2c565b6040516101d29190613763565b60405180910390f35b3480156101e757600080fd5b5061020260048036036101fd9190810190612d41565b610cc4565b005b34801561021057600080fd5b5061022b60048036036102269190810190612f44565b61108d565b005b34801561023957600080fd5b50610254600480360361024f9190810190612ee1565b611102565b005b34801561026257600080fd5b5061027d60048036036102789190810190612d41565b611177565b005b34801561028b57600080fd5b506102a660048036036102a19190810190612db8565b611465565b005b3480156102b457600080fd5b506102cf60048036036102ca919081019061311a565b6115c3565b005b600084905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031e57600080fd5b505afa158015610332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103569190810190612c86565b9050600061036482876107b5565b90506060896040516020016103799190613556565b604051602081830303815290604052868660405160200161039c93929190613530565b604051602081830303815290604052905060008473ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561047257600080fd5b505afa158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104aa9190810190612c86565b90506105368573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f557600080fd5b505afa158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061052d9190810190612c86565b898d6001611102565b6105408a8261215c565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8773ffffffffffffffffffffffffffffffffffffffff1663ee2a94116040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a357600080fd5b505afa1580156105b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105db9190810190612c86565b86866040518563ffffffff1660e01b81526004016105fc9493929190613571565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b505050506106b78573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561067757600080fd5b505afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106af9190810190612c86565b896001610743565b6106c18a8261235e565b5050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16639bb8f8388484846040518463ffffffff1660e01b815260040161070b939291906137a7565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fcafcc6883836040518363ffffffff1660e01b815260040161077e92919061377e565b600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50505050505050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108369190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016108739190613763565b60206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108c39190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016109009190613763565b60206040518083038186803b15801561091857600080fd5b505afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109509190810190613011565b905060008673ffffffffffffffffffffffffffffffffffffffff16638161b120876040518263ffffffff1660e01b815260040161098d9190613763565b60206040518083038186803b1580156109a557600080fd5b505afa1580156109b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109dd9190810190612c86565b90506109eb84828585612560565b94505050505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4057600080fd5b505afa158015610a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a789190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610ab59190613763565b60206040518083038186803b158015610acd57600080fd5b505afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b059190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610b429190613763565b60206040518083038186803b158015610b5a57600080fd5b505afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b929190810190613011565b90508273ffffffffffffffffffffffffffffffffffffffff16632424be5c82846040518363ffffffff1660e01b8152600401610bcf929190613623565b604080518083038186803b158015610be657600080fd5b505afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1e91908101906130de565b508094505050505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff16636090dec584846040518363ffffffff1660e01b8152600401610c69929190613623565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cbb91908101906130b5565b90509392505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d449190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610d819190613763565b60206040518083038186803b158015610d9957600080fd5b505afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd19190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610e0e9190613763565b60206040518083038186803b158015610e2657600080fd5b505afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e5e9190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401610e9d929190613623565b604080518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610eec91908101906130de565b915050610f058784610f0087878888612560565b611465565b610f1f8987610f1388612772565b6000038460000361108d565b610f2b898730886106ce565b8773ffffffffffffffffffffffffffffffffffffffff1663ef693bed30876040518363ffffffff1660e01b8152600401610f669291906135bd565b600060405180830381600087803b158015610f8057600080fd5b505af1158015610f94573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110189190810190613063565b73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b81526004016110509190613763565b600060405180830381600087803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b50505050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8484846040518463ffffffff1660e01b81526004016110ca939291906137de565b600060405180830381600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16630b63fb628484846040518463ffffffff1660e01b815260040161113f939291906137a7565b600060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111f79190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016112349190613763565b60206040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112849190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016112c19190613763565b60206040518083038186803b1580156112d957600080fd5b505afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113119190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401611350929190613623565b604080518083038186803b15801561136757600080fd5b505afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061139f91908101906130de565b9150506113b887846113b387878888612560565b611465565b60006113c489876127c0565b90506113e08a886113d484612772565b6000038560000361108d565b6113ec8a8830846106ce565b8873ffffffffffffffffffffffffffffffffffffffff1663ef693bed30886040518363ffffffff1660e01b81526004016114279291906135bd565b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b5050505050505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114ad57600080fd5b505af11580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e59190810190613063565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b815260040161151f9291906135bd565b600060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b815260040161158c9291906135bd565b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50505050505050565b6000838587010190506115d46129c1565b83836115e3919081019061308c565b905060008160000151905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061166e9190810190612c86565b905060008360400151905060006116898386602001516109f7565b9050606060026040519080825280602002602001820160405280156116bd5781602001602082028038833980820191505090505b50905082816000815181106116ce57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561174e57600080fd5b505afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117869190810190612c86565b8160018151811061179357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060608573ffffffffffffffffffffffffffffffffffffffff1663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561181557600080fd5b505afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061184d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b815260040161188591906135e6565b600060405180830381600087803b15801561189f57600080fd5b505af11580156118b3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506118dc9190810190612fa7565b90506000816000815181106118ed57fe5b602002602001015114611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906136e3565b60405180910390fd5b60008160018151811061194457fe5b60200260200101511461198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613743565b60405180910390fd5b7f4554482d410000000000000000000000000000000000000000000000000000008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd89602001516040518263ffffffff1660e01b81526004016119ea9190613763565b60206040518083038186803b158015611a0257600080fd5b505afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3a9190810190613011565b1415611d7857611b4b858773ffffffffffffffffffffffffffffffffffffffff16638ec9f15f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8a57600080fd5b505afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ac29190810190612c86565b8873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b409190810190612c86565b8a6020015187610cc4565b8573ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9157600080fd5b505afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bc99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16631249c58b846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c1057600080fd5b505af1158015611c24573d6000803e3d6000fd5b505050505060008673ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ca99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8a6040518263ffffffff1660e01b8152600401611ce19190613763565b602060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d3391908101906130b5565b14611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a906136c3565b60405180910390fd5b61214d565b611e178588606001518873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dff9190810190612c86565b8a60200151611e128c6060015189612859565b611177565b6000611e278489608001516128f2565b90508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6f57600080fd5b505afa158015611e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea79190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b8152600401611ee19291906135bd565b602060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f339190810190612fe8565b5060008573ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b8152600401611f6f9190613763565b602060405180830381600087803b158015611f8957600080fd5b505af1158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fc191908101906130b5565b14612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613703565b60405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561204957600080fd5b505afa15801561205d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120819190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8b6040518263ffffffff1660e01b81526004016120b99190613763565b602060405180830381600087803b1580156120d357600080fd5b505af11580156120e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210b91908101906130b5565b1461214b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612142906136c3565b60405180910390fd5b505b50505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121dc919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561225357600080fd5b505afa158015612267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061228b9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123099190810190613011565b6040518463ffffffff1660e01b81526004016123279392919061364c565b600060405180830381600087803b15801561234157600080fd5b505af1158015612355573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a657600080fd5b505afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123de919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561245557600080fd5b505afa158015612469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061248d9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156124d357600080fd5b505afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061250b9190810190613011565b6040518463ffffffff1660e01b81526004016125299392919061364c565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040161259c9190613608565b60a06040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125ec919081019061319a565b50505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b815260040161262f929190613623565b604080518083038186803b15801561264657600080fd5b505afa15801561265a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061267e91908101906130de565b91505060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346886040518263ffffffff1660e01b81526004016126bc9190613556565b60206040518083038186803b1580156126d457600080fd5b505afa1580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061270c91908101906130b5565b9050600061272361271d848661290f565b83612971565b90506b033b2e3c9fd0803ce8000000818161273a57fe5b04945080612754866b033b2e3c9fd0803ce800000061290f565b1061275f5784612764565b600185015b945050505050949350505050565b600081905060008112156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613723565b60405180910390fd5b919050565b6000612851828473ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561280e57600080fd5b505af1158015612822573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061284691908101906130b5565b601203600a0a61290f565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156128a357600080fd5b505af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128db91908101906130b5565b601203600a0a82816128e957fe5b04905092915050565b60008160ff16601203600a0a838161290657fe5b04905092915050565b60008082148061292c575082828385029250828161292957fe5b04145b61296b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296290613683565b60405180910390fd5b92915050565b60008282840391508111156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b2906136a3565b60405180910390fd5b92915050565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff1681525090565b600081359050612a4481613a03565b92915050565b600081519050612a5981613a03565b92915050565b600081359050612a6e81613a1a565b92915050565b600082601f830112612a8557600080fd5b8151612a98612a9382613842565b613815565b91508181835260208401935060208101905083856020840282011115612abd57600080fd5b60005b83811015612aed5781612ad38882612c5c565b845260208401935060208301925050600181019050612ac0565b5050505092915050565b600081519050612b0681613a31565b92915050565b600081359050612b1b81613a48565b92915050565b600081519050612b3081613a48565b92915050565b60008083601f840112612b4857600080fd5b8235905067ffffffffffffffff811115612b6157600080fd5b602083019150836001820283011115612b7957600080fd5b9250929050565b600081519050612b8f81613a5f565b92915050565b600081519050612ba481613a76565b92915050565b600081359050612bb981613a8d565b92915050565b600060a08284031215612bd157600080fd5b612bdb60a0613815565b90506000612beb84828501612a35565b6000830152506020612bff84828501612c47565b6020830152506040612c1384828501612a35565b6040830152506060612c2784828501612a35565b6060830152506080612c3b84828501612c71565b60808301525092915050565b600081359050612c5681613aa4565b92915050565b600081519050612c6b81613aa4565b92915050565b600081359050612c8081613abb565b92915050565b600060208284031215612c9857600080fd5b6000612ca684828501612a4a565b91505092915050565b60008060008060008060a08789031215612cc857600080fd5b6000612cd689828a01612a35565b9650506020612ce789828a01612a5f565b9550506040612cf889828a01612a35565b9450506060612d0989828a01612c47565b935050608087013567ffffffffffffffff811115612d2657600080fd5b612d3289828a01612b36565b92509250509295509295509295565b600080600080600060a08688031215612d5957600080fd5b6000612d6788828901612a35565b9550506020612d7888828901612a35565b9450506040612d8988828901612a35565b9350506060612d9a88828901612c47565b9250506080612dab88828901612c47565b9150509295509295909350565b600080600060608486031215612dcd57600080fd5b6000612ddb86828701612a35565b9350506020612dec86828701612a35565b9250506040612dfd86828701612c47565b9150509250925092565b600080600060608486031215612e1c57600080fd5b6000612e2a86828701612a35565b9350506020612e3b86828701612b0c565b9250506040612e4c86828701612a35565b9150509250925092565b60008060408385031215612e6957600080fd5b6000612e7785828601612a35565b9250506020612e8885828601612c47565b9150509250929050565b600080600060608486031215612ea757600080fd5b6000612eb586828701612a35565b9350506020612ec686828701612c47565b9250506040612ed786828701612a35565b9150509250925092565b60008060008060808587031215612ef757600080fd5b6000612f0587828801612a35565b9450506020612f1687828801612c47565b9350506040612f2787828801612a35565b9250506060612f3887828801612c47565b91505092959194509250565b60008060008060808587031215612f5a57600080fd5b6000612f6887828801612a35565b9450506020612f7987828801612c47565b9350506040612f8a87828801612baa565b9250506060612f9b87828801612baa565b91505092959194509250565b600060208284031215612fb957600080fd5b600082015167ffffffffffffffff811115612fd357600080fd5b612fdf84828501612a74565b91505092915050565b600060208284031215612ffa57600080fd5b600061300884828501612af7565b91505092915050565b60006020828403121561302357600080fd5b600061303184828501612b21565b91505092915050565b60006020828403121561304c57600080fd5b600061305a84828501612b80565b91505092915050565b60006020828403121561307557600080fd5b600061308384828501612b95565b91505092915050565b600060a0828403121561309e57600080fd5b60006130ac84828501612bbf565b91505092915050565b6000602082840312156130c757600080fd5b60006130d584828501612c5c565b91505092915050565b600080604083850312156130f157600080fd5b60006130ff85828601612c5c565b925050602061311085828601612c5c565b9150509250929050565b60008060008060006080868803121561313257600080fd5b600061314088828901612c47565b955050602061315188828901612c47565b945050604061316288828901612c47565b935050606086013567ffffffffffffffff81111561317f57600080fd5b61318b88828901612b36565b92509250509295509295909350565b600080600080600060a086880312156131b257600080fd5b60006131c088828901612c5c565b95505060206131d188828901612c5c565b94505060406131e288828901612c5c565b93505060606131f388828901612c5c565b925050608061320488828901612c5c565b9150509295509295909350565b600061321d8383613238565b60208301905092915050565b6132328161397a565b82525050565b613241816138db565b82525050565b613250816138db565b82525050565b60006132618261387a565b61326b818561389d565b93506132768361386a565b8060005b838110156132a757815161328e8882613211565b975061329983613890565b92505060018101905061327a565b5085935050505092915050565b6132bd8161390b565b82525050565b60006132cf83856138bf565b93506132dc8385846139b0565b82840190509392505050565b60006132f382613885565b6132fd81856138ae565b935061330d8185602086016139bf565b613316816139f2565b840191505092915050565b600061332c82613885565b61333681856138bf565b93506133468185602086016139bf565b80840191505092915050565b61335b81613939565b82525050565b600061336e600c836138ca565b91507f6d756c2d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ae600c836138ca565b91507f7375622d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ee600f836138ca565b91507f6461692d626f72726f772d6661696c00000000000000000000000000000000006000830152602082019050919050565b600061342e6014836138ca565b91507f6d6b722d656e7465722d67656d2d6661696c65640000000000000000000000006000830152602082019050919050565b600061346e600f836138ca565b91507f67656d2d737570706c792d6661696c00000000000000000000000000000000006000830152602082019050919050565b60006134ae600c836138ca565b91507f696e742d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006134ee6014836138ca565b91507f6d6b722d656e7465722d6461692d6661696c65640000000000000000000000006000830152602082019050919050565b61352a81613963565b82525050565b600061353c8286613321565b91506135498284866132c3565b9150819050949350505050565b600060208201905061356b6000830184613247565b92915050565b60006080820190506135866000830187613229565b6135936020830186613247565b6135a06040830185613521565b81810360608301526135b281846132e8565b905095945050505050565b60006040820190506135d26000830185613247565b6135df6020830184613521565b9392505050565b600060208201905081810360008301526136008184613256565b905092915050565b600060208201905061361d60008301846132b4565b92915050565b600060408201905061363860008301856132b4565b6136456020830184613247565b9392505050565b600060608201905061366160008301866132b4565b61366e60208301856132b4565b61367b60408301846132b4565b949350505050565b6000602082019050818103600083015261369c81613361565b9050919050565b600060208201905081810360008301526136bc816133a1565b9050919050565b600060208201905081810360008301526136dc816133e1565b9050919050565b600060208201905081810360008301526136fc81613421565b9050919050565b6000602082019050818103600083015261371c81613461565b9050919050565b6000602082019050818103600083015261373c816134a1565b9050919050565b6000602082019050818103600083015261375c816134e1565b9050919050565b60006020820190506137786000830184613521565b92915050565b60006040820190506137936000830185613521565b6137a06020830184613247565b9392505050565b60006060820190506137bc6000830186613521565b6137c96020830185613247565b6137d66040830184613521565b949350505050565b60006060820190506137f36000830186613521565b6138006020830185613352565b61380d6040830184613352565b949350505050565b6000604051905081810181811067ffffffffffffffff8211171561383857600080fd5b8060405250919050565b600067ffffffffffffffff82111561385957600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006138e682613943565b9050919050565b60006138f882613943565b9050919050565b60008115159050919050565b6000819050919050565b6000613920826138db565b9050919050565b6000613932826138db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139858261398c565b9050919050565b60006139978261399e565b9050919050565b60006139a982613943565b9050919050565b82818337600083830152505050565b60005b838110156139dd5780820151818401526020810190506139c2565b838111156139ec576000848401525b50505050565b6000601f19601f8301169050919050565b613a0c816138db565b8114613a1757600080fd5b50565b613a23816138ed565b8114613a2e57600080fd5b50565b613a3a816138ff565b8114613a4557600080fd5b50565b613a518161390b565b8114613a5c57600080fd5b50565b613a6881613915565b8114613a7357600080fd5b50565b613a7f81613927565b8114613a8a57600080fd5b50565b613a9681613939565b8114613aa157600080fd5b50565b613aad81613963565b8114613ab857600080fd5b50565b613ac48161396d565b8114613acf57600080fd5b5056fea365627a7a72315820deccab702488b18dd2e5dbc0016c97b10afb17796921d2088f206045a909c1546c6578706572696d656e74616cf564736f6c63430005100040", - "deployedBytecode": "0x6080604052600436106100a75760003560e01c80636d68b70b116100645780636d68b70b146101db57806396e8d72c14610204578063ba727a951461022d578063bcd6deec14610256578063c56167c61461027f578063ddd927b2146102a8576100a7565b8063131fb710146100a95780631558b048146100d25780631d10f231146100fb5780633edec14e1461012457806361d2d7dc146101615780636aa3ee111461019e575b005b3480156100b557600080fd5b506100d060048036036100cb9190810190612caf565b6102d1565b005b3480156100de57600080fd5b506100f960048036036100f49190810190612ee1565b6106ce565b005b34801561010757600080fd5b50610122600480360361011d9190810190612e92565b610743565b005b34801561013057600080fd5b5061014b60048036036101469190810190612e56565b6107b5565b6040516101589190613763565b60405180910390f35b34801561016d57600080fd5b5061018860048036036101839190810190612e56565b6109f7565b6040516101959190613763565b60405180910390f35b3480156101aa57600080fd5b506101c560048036036101c09190810190612e07565b610c2c565b6040516101d29190613763565b60405180910390f35b3480156101e757600080fd5b5061020260048036036101fd9190810190612d41565b610cc4565b005b34801561021057600080fd5b5061022b60048036036102269190810190612f44565b61108d565b005b34801561023957600080fd5b50610254600480360361024f9190810190612ee1565b611102565b005b34801561026257600080fd5b5061027d60048036036102789190810190612d41565b611177565b005b34801561028b57600080fd5b506102a660048036036102a19190810190612db8565b611465565b005b3480156102b457600080fd5b506102cf60048036036102ca919081019061311a565b6115c3565b005b600084905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031e57600080fd5b505afa158015610332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103569190810190612c86565b9050600061036482876107b5565b90506060896040516020016103799190613556565b604051602081830303815290604052868660405160200161039c93929190613530565b604051602081830303815290604052905060008473ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561047257600080fd5b505afa158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104aa9190810190612c86565b90506105368573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f557600080fd5b505afa158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061052d9190810190612c86565b898d6001611102565b6105408a8261215c565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8773ffffffffffffffffffffffffffffffffffffffff1663ee2a94116040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a357600080fd5b505afa1580156105b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105db9190810190612c86565b86866040518563ffffffff1660e01b81526004016105fc9493929190613571565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b505050506106b78573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561067757600080fd5b505afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106af9190810190612c86565b896001610743565b6106c18a8261235e565b5050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16639bb8f8388484846040518463ffffffff1660e01b815260040161070b939291906137a7565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fcafcc6883836040518363ffffffff1660e01b815260040161077e92919061377e565b600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50505050505050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108369190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016108739190613763565b60206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108c39190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016109009190613763565b60206040518083038186803b15801561091857600080fd5b505afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109509190810190613011565b905060008673ffffffffffffffffffffffffffffffffffffffff16638161b120876040518263ffffffff1660e01b815260040161098d9190613763565b60206040518083038186803b1580156109a557600080fd5b505afa1580156109b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109dd9190810190612c86565b90506109eb84828585612560565b94505050505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4057600080fd5b505afa158015610a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a789190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610ab59190613763565b60206040518083038186803b158015610acd57600080fd5b505afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b059190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610b429190613763565b60206040518083038186803b158015610b5a57600080fd5b505afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b929190810190613011565b90508273ffffffffffffffffffffffffffffffffffffffff16632424be5c82846040518363ffffffff1660e01b8152600401610bcf929190613623565b604080518083038186803b158015610be657600080fd5b505afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1e91908101906130de565b508094505050505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff16636090dec584846040518363ffffffff1660e01b8152600401610c69929190613623565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cbb91908101906130b5565b90509392505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d449190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610d819190613763565b60206040518083038186803b158015610d9957600080fd5b505afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd19190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610e0e9190613763565b60206040518083038186803b158015610e2657600080fd5b505afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e5e9190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401610e9d929190613623565b604080518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610eec91908101906130de565b915050610f058784610f0087878888612560565b611465565b610f1f8987610f1388612772565b6000038460000361108d565b610f2b898730886106ce565b8773ffffffffffffffffffffffffffffffffffffffff1663ef693bed30876040518363ffffffff1660e01b8152600401610f669291906135bd565b600060405180830381600087803b158015610f8057600080fd5b505af1158015610f94573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110189190810190613063565b73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b81526004016110509190613763565b600060405180830381600087803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b50505050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8484846040518463ffffffff1660e01b81526004016110ca939291906137de565b600060405180830381600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16630b63fb628484846040518463ffffffff1660e01b815260040161113f939291906137a7565b600060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111f79190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016112349190613763565b60206040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112849190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016112c19190613763565b60206040518083038186803b1580156112d957600080fd5b505afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113119190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401611350929190613623565b604080518083038186803b15801561136757600080fd5b505afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061139f91908101906130de565b9150506113b887846113b387878888612560565b611465565b60006113c489876127c0565b90506113e08a886113d484612772565b6000038560000361108d565b6113ec8a8830846106ce565b8873ffffffffffffffffffffffffffffffffffffffff1663ef693bed30886040518363ffffffff1660e01b81526004016114279291906135bd565b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b5050505050505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114ad57600080fd5b505af11580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e59190810190613063565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b815260040161151f9291906135bd565b600060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b815260040161158c9291906135bd565b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50505050505050565b6000838587010190506115d46129c1565b83836115e3919081019061308c565b905060008160000151905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061166e9190810190612c86565b905060008360400151905060006116898386602001516109f7565b9050606060026040519080825280602002602001820160405280156116bd5781602001602082028038833980820191505090505b50905082816000815181106116ce57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561174e57600080fd5b505afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117869190810190612c86565b8160018151811061179357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060608573ffffffffffffffffffffffffffffffffffffffff1663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561181557600080fd5b505afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061184d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b815260040161188591906135e6565b600060405180830381600087803b15801561189f57600080fd5b505af11580156118b3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506118dc9190810190612fa7565b90506000816000815181106118ed57fe5b602002602001015114611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906136e3565b60405180910390fd5b60008160018151811061194457fe5b60200260200101511461198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613743565b60405180910390fd5b7f4554482d410000000000000000000000000000000000000000000000000000008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd89602001516040518263ffffffff1660e01b81526004016119ea9190613763565b60206040518083038186803b158015611a0257600080fd5b505afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3a9190810190613011565b1415611d7857611b4b858773ffffffffffffffffffffffffffffffffffffffff16638ec9f15f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8a57600080fd5b505afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ac29190810190612c86565b8873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b409190810190612c86565b8a6020015187610cc4565b8573ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9157600080fd5b505afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bc99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16631249c58b846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c1057600080fd5b505af1158015611c24573d6000803e3d6000fd5b505050505060008673ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ca99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8a6040518263ffffffff1660e01b8152600401611ce19190613763565b602060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d3391908101906130b5565b14611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a906136c3565b60405180910390fd5b61214d565b611e178588606001518873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dff9190810190612c86565b8a60200151611e128c6060015189612859565b611177565b6000611e278489608001516128f2565b90508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6f57600080fd5b505afa158015611e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea79190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b8152600401611ee19291906135bd565b602060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f339190810190612fe8565b5060008573ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b8152600401611f6f9190613763565b602060405180830381600087803b158015611f8957600080fd5b505af1158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fc191908101906130b5565b14612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613703565b60405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561204957600080fd5b505afa15801561205d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120819190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8b6040518263ffffffff1660e01b81526004016120b99190613763565b602060405180830381600087803b1580156120d357600080fd5b505af11580156120e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210b91908101906130b5565b1461214b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612142906136c3565b60405180910390fd5b505b50505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121dc919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561225357600080fd5b505afa158015612267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061228b9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123099190810190613011565b6040518463ffffffff1660e01b81526004016123279392919061364c565b600060405180830381600087803b15801561234157600080fd5b505af1158015612355573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a657600080fd5b505afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123de919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561245557600080fd5b505afa158015612469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061248d9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156124d357600080fd5b505afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061250b9190810190613011565b6040518463ffffffff1660e01b81526004016125299392919061364c565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040161259c9190613608565b60a06040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125ec919081019061319a565b50505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b815260040161262f929190613623565b604080518083038186803b15801561264657600080fd5b505afa15801561265a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061267e91908101906130de565b91505060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346886040518263ffffffff1660e01b81526004016126bc9190613556565b60206040518083038186803b1580156126d457600080fd5b505afa1580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061270c91908101906130b5565b9050600061272361271d848661290f565b83612971565b90506b033b2e3c9fd0803ce8000000818161273a57fe5b04945080612754866b033b2e3c9fd0803ce800000061290f565b1061275f5784612764565b600185015b945050505050949350505050565b600081905060008112156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613723565b60405180910390fd5b919050565b6000612851828473ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561280e57600080fd5b505af1158015612822573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061284691908101906130b5565b601203600a0a61290f565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156128a357600080fd5b505af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128db91908101906130b5565b601203600a0a82816128e957fe5b04905092915050565b60008160ff16601203600a0a838161290657fe5b04905092915050565b60008082148061292c575082828385029250828161292957fe5b04145b61296b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296290613683565b60405180910390fd5b92915050565b60008282840391508111156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b2906136a3565b60405180910390fd5b92915050565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff1681525090565b600081359050612a4481613a03565b92915050565b600081519050612a5981613a03565b92915050565b600081359050612a6e81613a1a565b92915050565b600082601f830112612a8557600080fd5b8151612a98612a9382613842565b613815565b91508181835260208401935060208101905083856020840282011115612abd57600080fd5b60005b83811015612aed5781612ad38882612c5c565b845260208401935060208301925050600181019050612ac0565b5050505092915050565b600081519050612b0681613a31565b92915050565b600081359050612b1b81613a48565b92915050565b600081519050612b3081613a48565b92915050565b60008083601f840112612b4857600080fd5b8235905067ffffffffffffffff811115612b6157600080fd5b602083019150836001820283011115612b7957600080fd5b9250929050565b600081519050612b8f81613a5f565b92915050565b600081519050612ba481613a76565b92915050565b600081359050612bb981613a8d565b92915050565b600060a08284031215612bd157600080fd5b612bdb60a0613815565b90506000612beb84828501612a35565b6000830152506020612bff84828501612c47565b6020830152506040612c1384828501612a35565b6040830152506060612c2784828501612a35565b6060830152506080612c3b84828501612c71565b60808301525092915050565b600081359050612c5681613aa4565b92915050565b600081519050612c6b81613aa4565b92915050565b600081359050612c8081613abb565b92915050565b600060208284031215612c9857600080fd5b6000612ca684828501612a4a565b91505092915050565b60008060008060008060a08789031215612cc857600080fd5b6000612cd689828a01612a35565b9650506020612ce789828a01612a5f565b9550506040612cf889828a01612a35565b9450506060612d0989828a01612c47565b935050608087013567ffffffffffffffff811115612d2657600080fd5b612d3289828a01612b36565b92509250509295509295509295565b600080600080600060a08688031215612d5957600080fd5b6000612d6788828901612a35565b9550506020612d7888828901612a35565b9450506040612d8988828901612a35565b9350506060612d9a88828901612c47565b9250506080612dab88828901612c47565b9150509295509295909350565b600080600060608486031215612dcd57600080fd5b6000612ddb86828701612a35565b9350506020612dec86828701612a35565b9250506040612dfd86828701612c47565b9150509250925092565b600080600060608486031215612e1c57600080fd5b6000612e2a86828701612a35565b9350506020612e3b86828701612b0c565b9250506040612e4c86828701612a35565b9150509250925092565b60008060408385031215612e6957600080fd5b6000612e7785828601612a35565b9250506020612e8885828601612c47565b9150509250929050565b600080600060608486031215612ea757600080fd5b6000612eb586828701612a35565b9350506020612ec686828701612c47565b9250506040612ed786828701612a35565b9150509250925092565b60008060008060808587031215612ef757600080fd5b6000612f0587828801612a35565b9450506020612f1687828801612c47565b9350506040612f2787828801612a35565b9250506060612f3887828801612c47565b91505092959194509250565b60008060008060808587031215612f5a57600080fd5b6000612f6887828801612a35565b9450506020612f7987828801612c47565b9350506040612f8a87828801612baa565b9250506060612f9b87828801612baa565b91505092959194509250565b600060208284031215612fb957600080fd5b600082015167ffffffffffffffff811115612fd357600080fd5b612fdf84828501612a74565b91505092915050565b600060208284031215612ffa57600080fd5b600061300884828501612af7565b91505092915050565b60006020828403121561302357600080fd5b600061303184828501612b21565b91505092915050565b60006020828403121561304c57600080fd5b600061305a84828501612b80565b91505092915050565b60006020828403121561307557600080fd5b600061308384828501612b95565b91505092915050565b600060a0828403121561309e57600080fd5b60006130ac84828501612bbf565b91505092915050565b6000602082840312156130c757600080fd5b60006130d584828501612c5c565b91505092915050565b600080604083850312156130f157600080fd5b60006130ff85828601612c5c565b925050602061311085828601612c5c565b9150509250929050565b60008060008060006080868803121561313257600080fd5b600061314088828901612c47565b955050602061315188828901612c47565b945050604061316288828901612c47565b935050606086013567ffffffffffffffff81111561317f57600080fd5b61318b88828901612b36565b92509250509295509295909350565b600080600080600060a086880312156131b257600080fd5b60006131c088828901612c5c565b95505060206131d188828901612c5c565b94505060406131e288828901612c5c565b93505060606131f388828901612c5c565b925050608061320488828901612c5c565b9150509295509295909350565b600061321d8383613238565b60208301905092915050565b6132328161397a565b82525050565b613241816138db565b82525050565b613250816138db565b82525050565b60006132618261387a565b61326b818561389d565b93506132768361386a565b8060005b838110156132a757815161328e8882613211565b975061329983613890565b92505060018101905061327a565b5085935050505092915050565b6132bd8161390b565b82525050565b60006132cf83856138bf565b93506132dc8385846139b0565b82840190509392505050565b60006132f382613885565b6132fd81856138ae565b935061330d8185602086016139bf565b613316816139f2565b840191505092915050565b600061332c82613885565b61333681856138bf565b93506133468185602086016139bf565b80840191505092915050565b61335b81613939565b82525050565b600061336e600c836138ca565b91507f6d756c2d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ae600c836138ca565b91507f7375622d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ee600f836138ca565b91507f6461692d626f72726f772d6661696c00000000000000000000000000000000006000830152602082019050919050565b600061342e6014836138ca565b91507f6d6b722d656e7465722d67656d2d6661696c65640000000000000000000000006000830152602082019050919050565b600061346e600f836138ca565b91507f67656d2d737570706c792d6661696c00000000000000000000000000000000006000830152602082019050919050565b60006134ae600c836138ca565b91507f696e742d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006134ee6014836138ca565b91507f6d6b722d656e7465722d6461692d6661696c65640000000000000000000000006000830152602082019050919050565b61352a81613963565b82525050565b600061353c8286613321565b91506135498284866132c3565b9150819050949350505050565b600060208201905061356b6000830184613247565b92915050565b60006080820190506135866000830187613229565b6135936020830186613247565b6135a06040830185613521565b81810360608301526135b281846132e8565b905095945050505050565b60006040820190506135d26000830185613247565b6135df6020830184613521565b9392505050565b600060208201905081810360008301526136008184613256565b905092915050565b600060208201905061361d60008301846132b4565b92915050565b600060408201905061363860008301856132b4565b6136456020830184613247565b9392505050565b600060608201905061366160008301866132b4565b61366e60208301856132b4565b61367b60408301846132b4565b949350505050565b6000602082019050818103600083015261369c81613361565b9050919050565b600060208201905081810360008301526136bc816133a1565b9050919050565b600060208201905081810360008301526136dc816133e1565b9050919050565b600060208201905081810360008301526136fc81613421565b9050919050565b6000602082019050818103600083015261371c81613461565b9050919050565b6000602082019050818103600083015261373c816134a1565b9050919050565b6000602082019050818103600083015261375c816134e1565b9050919050565b60006020820190506137786000830184613521565b92915050565b60006040820190506137936000830185613521565b6137a06020830184613247565b9392505050565b60006060820190506137bc6000830186613521565b6137c96020830185613247565b6137d66040830184613521565b949350505050565b60006060820190506137f36000830186613521565b6138006020830185613352565b61380d6040830184613352565b949350505050565b6000604051905081810181811067ffffffffffffffff8211171561383857600080fd5b8060405250919050565b600067ffffffffffffffff82111561385957600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006138e682613943565b9050919050565b60006138f882613943565b9050919050565b60008115159050919050565b6000819050919050565b6000613920826138db565b9050919050565b6000613932826138db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139858261398c565b9050919050565b60006139978261399e565b9050919050565b60006139a982613943565b9050919050565b82818337600083830152505050565b60005b838110156139dd5780820151818401526020810190506139c2565b838111156139ec576000848401525b50505050565b6000601f19601f8301169050919050565b613a0c816138db565b8114613a1757600080fd5b50565b613a23816138ed565b8114613a2e57600080fd5b50565b613a3a816138ff565b8114613a4557600080fd5b50565b613a518161390b565b8114613a5c57600080fd5b50565b613a6881613915565b8114613a7357600080fd5b50565b613a7f81613927565b8114613a8a57600080fd5b50565b613a9681613939565b8114613aa157600080fd5b50565b613aad81613963565b8114613ab857600080fd5b50565b613ac48161396d565b8114613acf57600080fd5b5056fea365627a7a72315820deccab702488b18dd2e5dbc0016c97b10afb17796921d2088f206045a909c1546c6578706572696d656e74616cf564736f6c63430005100040", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dink\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dart\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"getVaultCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ink\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"getVaultDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"debt\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeMakerManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdpId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"importMakerVault\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"importMakerVaultPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol\":\"DedgeMakerManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol\":{\"keccak256\":\"0xc670eb42195a3be8cf8ea3d11f3afa457377bfd52382094f65c63182e679863f\",\"urls\":[\"bzz-raw://855acaff1c943a63987c31ee6db3362b6c85ab419046430eaf160a96c0dc70e4\",\"dweb:/ipfs/QmWEdWqVUfsYKrJcxVQ9sowhTGUsaoydpUWsQjHkFmAPHX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol\":{\"keccak256\":\"0x2f6d78b485392995fd2deb695a6983e82971feaf2ba629474d4ee0c5ee769614\",\"urls\":[\"bzz-raw://feca374d541b17754aecc30a9a5312de3ad406597df1d4c8b4f123bb8bca8036\",\"dweb:/ipfs/QmYdtfcTp4Dvozfa3PpLaWTxg8WnzQiie2cVnq5QPUD1CJ\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol\":{\"keccak256\":\"0x668fd43717315e1be5bf188d316d6a01e0560a42cde699a9b9d56b22436ddf1c\",\"urls\":[\"bzz-raw://082390efee5a477860b87da8f35543903746cf831fc209a39ddf06075e2438f9\",\"dweb:/ipfs/QmTVQdmTzZyLvwBX81ic73BUiCPwMaZEVEgMxomaC4UWXG\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50613b15806100206000396000f3fe6080604052600436106100a75760003560e01c80636d68b70b116100645780636d68b70b146101db57806396e8d72c14610204578063ba727a951461022d578063bcd6deec14610256578063c56167c61461027f578063ddd927b2146102a8576100a7565b8063131fb710146100a95780631558b048146100d25780631d10f231146100fb5780633edec14e1461012457806361d2d7dc146101615780636aa3ee111461019e575b005b3480156100b557600080fd5b506100d060048036036100cb9190810190612caf565b6102d1565b005b3480156100de57600080fd5b506100f960048036036100f49190810190612ee1565b6106ce565b005b34801561010757600080fd5b50610122600480360361011d9190810190612e92565b610743565b005b34801561013057600080fd5b5061014b60048036036101469190810190612e56565b6107b5565b6040516101589190613763565b60405180910390f35b34801561016d57600080fd5b5061018860048036036101839190810190612e56565b6109f7565b6040516101959190613763565b60405180910390f35b3480156101aa57600080fd5b506101c560048036036101c09190810190612e07565b610c2c565b6040516101d29190613763565b60405180910390f35b3480156101e757600080fd5b5061020260048036036101fd9190810190612d41565b610cc4565b005b34801561021057600080fd5b5061022b60048036036102269190810190612f44565b61108d565b005b34801561023957600080fd5b50610254600480360361024f9190810190612ee1565b611102565b005b34801561026257600080fd5b5061027d60048036036102789190810190612d41565b611177565b005b34801561028b57600080fd5b506102a660048036036102a19190810190612db8565b611465565b005b3480156102b457600080fd5b506102cf60048036036102ca919081019061311a565b6115c3565b005b600084905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031e57600080fd5b505afa158015610332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103569190810190612c86565b9050600061036482876107b5565b90506060896040516020016103799190613556565b604051602081830303815290604052868660405160200161039c93929190613530565b604051602081830303815290604052905060008473ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561047257600080fd5b505afa158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104aa9190810190612c86565b90506105368573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f557600080fd5b505afa158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061052d9190810190612c86565b898d6001611102565b6105408a8261215c565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8773ffffffffffffffffffffffffffffffffffffffff1663ee2a94116040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a357600080fd5b505afa1580156105b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105db9190810190612c86565b86866040518563ffffffff1660e01b81526004016105fc9493929190613571565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b505050506106b78573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561067757600080fd5b505afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106af9190810190612c86565b896001610743565b6106c18a8261235e565b5050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16639bb8f8388484846040518463ffffffff1660e01b815260040161070b939291906137a7565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fcafcc6883836040518363ffffffff1660e01b815260040161077e92919061377e565b600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50505050505050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108369190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016108739190613763565b60206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108c39190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016109009190613763565b60206040518083038186803b15801561091857600080fd5b505afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109509190810190613011565b905060008673ffffffffffffffffffffffffffffffffffffffff16638161b120876040518263ffffffff1660e01b815260040161098d9190613763565b60206040518083038186803b1580156109a557600080fd5b505afa1580156109b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109dd9190810190612c86565b90506109eb84828585612560565b94505050505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4057600080fd5b505afa158015610a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a789190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610ab59190613763565b60206040518083038186803b158015610acd57600080fd5b505afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b059190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610b429190613763565b60206040518083038186803b158015610b5a57600080fd5b505afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b929190810190613011565b90508273ffffffffffffffffffffffffffffffffffffffff16632424be5c82846040518363ffffffff1660e01b8152600401610bcf929190613623565b604080518083038186803b158015610be657600080fd5b505afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1e91908101906130de565b508094505050505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff16636090dec584846040518363ffffffff1660e01b8152600401610c69929190613623565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cbb91908101906130b5565b90509392505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d449190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610d819190613763565b60206040518083038186803b158015610d9957600080fd5b505afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd19190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610e0e9190613763565b60206040518083038186803b158015610e2657600080fd5b505afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e5e9190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401610e9d929190613623565b604080518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610eec91908101906130de565b915050610f058784610f0087878888612560565b611465565b610f1f8987610f1388612772565b6000038460000361108d565b610f2b898730886106ce565b8773ffffffffffffffffffffffffffffffffffffffff1663ef693bed30876040518363ffffffff1660e01b8152600401610f669291906135bd565b600060405180830381600087803b158015610f8057600080fd5b505af1158015610f94573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110189190810190613063565b73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b81526004016110509190613763565b600060405180830381600087803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b50505050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8484846040518463ffffffff1660e01b81526004016110ca939291906137de565b600060405180830381600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16630b63fb628484846040518463ffffffff1660e01b815260040161113f939291906137a7565b600060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111f79190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016112349190613763565b60206040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112849190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016112c19190613763565b60206040518083038186803b1580156112d957600080fd5b505afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113119190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401611350929190613623565b604080518083038186803b15801561136757600080fd5b505afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061139f91908101906130de565b9150506113b887846113b387878888612560565b611465565b60006113c489876127c0565b90506113e08a886113d484612772565b6000038560000361108d565b6113ec8a8830846106ce565b8873ffffffffffffffffffffffffffffffffffffffff1663ef693bed30886040518363ffffffff1660e01b81526004016114279291906135bd565b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b5050505050505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114ad57600080fd5b505af11580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e59190810190613063565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b815260040161151f9291906135bd565b600060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b815260040161158c9291906135bd565b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50505050505050565b6000838587010190506115d46129c1565b83836115e3919081019061308c565b905060008160000151905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061166e9190810190612c86565b905060008360400151905060006116898386602001516109f7565b9050606060026040519080825280602002602001820160405280156116bd5781602001602082028038833980820191505090505b50905082816000815181106116ce57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561174e57600080fd5b505afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117869190810190612c86565b8160018151811061179357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060608573ffffffffffffffffffffffffffffffffffffffff1663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561181557600080fd5b505afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061184d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b815260040161188591906135e6565b600060405180830381600087803b15801561189f57600080fd5b505af11580156118b3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506118dc9190810190612fa7565b90506000816000815181106118ed57fe5b602002602001015114611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906136e3565b60405180910390fd5b60008160018151811061194457fe5b60200260200101511461198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613743565b60405180910390fd5b7f4554482d410000000000000000000000000000000000000000000000000000008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd89602001516040518263ffffffff1660e01b81526004016119ea9190613763565b60206040518083038186803b158015611a0257600080fd5b505afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3a9190810190613011565b1415611d7857611b4b858773ffffffffffffffffffffffffffffffffffffffff16638ec9f15f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8a57600080fd5b505afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ac29190810190612c86565b8873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b409190810190612c86565b8a6020015187610cc4565b8573ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9157600080fd5b505afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bc99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16631249c58b846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c1057600080fd5b505af1158015611c24573d6000803e3d6000fd5b505050505060008673ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ca99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8a6040518263ffffffff1660e01b8152600401611ce19190613763565b602060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d3391908101906130b5565b14611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a906136c3565b60405180910390fd5b61214d565b611e178588606001518873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dff9190810190612c86565b8a60200151611e128c6060015189612859565b611177565b6000611e278489608001516128f2565b90508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6f57600080fd5b505afa158015611e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea79190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b8152600401611ee19291906135bd565b602060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f339190810190612fe8565b5060008573ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b8152600401611f6f9190613763565b602060405180830381600087803b158015611f8957600080fd5b505af1158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fc191908101906130b5565b14612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613703565b60405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561204957600080fd5b505afa15801561205d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120819190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8b6040518263ffffffff1660e01b81526004016120b99190613763565b602060405180830381600087803b1580156120d357600080fd5b505af11580156120e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210b91908101906130b5565b1461214b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612142906136c3565b60405180910390fd5b505b50505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121dc919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561225357600080fd5b505afa158015612267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061228b9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123099190810190613011565b6040518463ffffffff1660e01b81526004016123279392919061364c565b600060405180830381600087803b15801561234157600080fd5b505af1158015612355573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a657600080fd5b505afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123de919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561245557600080fd5b505afa158015612469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061248d9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156124d357600080fd5b505afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061250b9190810190613011565b6040518463ffffffff1660e01b81526004016125299392919061364c565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040161259c9190613608565b60a06040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125ec919081019061319a565b50505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b815260040161262f929190613623565b604080518083038186803b15801561264657600080fd5b505afa15801561265a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061267e91908101906130de565b91505060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346886040518263ffffffff1660e01b81526004016126bc9190613556565b60206040518083038186803b1580156126d457600080fd5b505afa1580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061270c91908101906130b5565b9050600061272361271d848661290f565b83612971565b90506b033b2e3c9fd0803ce8000000818161273a57fe5b04945080612754866b033b2e3c9fd0803ce800000061290f565b1061275f5784612764565b600185015b945050505050949350505050565b600081905060008112156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613723565b60405180910390fd5b919050565b6000612851828473ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561280e57600080fd5b505af1158015612822573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061284691908101906130b5565b601203600a0a61290f565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156128a357600080fd5b505af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128db91908101906130b5565b601203600a0a82816128e957fe5b04905092915050565b60008160ff16601203600a0a838161290657fe5b04905092915050565b60008082148061292c575082828385029250828161292957fe5b04145b61296b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296290613683565b60405180910390fd5b92915050565b60008282840391508111156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b2906136a3565b60405180910390fd5b92915050565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff1681525090565b600081359050612a4481613a03565b92915050565b600081519050612a5981613a03565b92915050565b600081359050612a6e81613a1a565b92915050565b600082601f830112612a8557600080fd5b8151612a98612a9382613842565b613815565b91508181835260208401935060208101905083856020840282011115612abd57600080fd5b60005b83811015612aed5781612ad38882612c5c565b845260208401935060208301925050600181019050612ac0565b5050505092915050565b600081519050612b0681613a31565b92915050565b600081359050612b1b81613a48565b92915050565b600081519050612b3081613a48565b92915050565b60008083601f840112612b4857600080fd5b8235905067ffffffffffffffff811115612b6157600080fd5b602083019150836001820283011115612b7957600080fd5b9250929050565b600081519050612b8f81613a5f565b92915050565b600081519050612ba481613a76565b92915050565b600081359050612bb981613a8d565b92915050565b600060a08284031215612bd157600080fd5b612bdb60a0613815565b90506000612beb84828501612a35565b6000830152506020612bff84828501612c47565b6020830152506040612c1384828501612a35565b6040830152506060612c2784828501612a35565b6060830152506080612c3b84828501612c71565b60808301525092915050565b600081359050612c5681613aa4565b92915050565b600081519050612c6b81613aa4565b92915050565b600081359050612c8081613abb565b92915050565b600060208284031215612c9857600080fd5b6000612ca684828501612a4a565b91505092915050565b60008060008060008060a08789031215612cc857600080fd5b6000612cd689828a01612a35565b9650506020612ce789828a01612a5f565b9550506040612cf889828a01612a35565b9450506060612d0989828a01612c47565b935050608087013567ffffffffffffffff811115612d2657600080fd5b612d3289828a01612b36565b92509250509295509295509295565b600080600080600060a08688031215612d5957600080fd5b6000612d6788828901612a35565b9550506020612d7888828901612a35565b9450506040612d8988828901612a35565b9350506060612d9a88828901612c47565b9250506080612dab88828901612c47565b9150509295509295909350565b600080600060608486031215612dcd57600080fd5b6000612ddb86828701612a35565b9350506020612dec86828701612a35565b9250506040612dfd86828701612c47565b9150509250925092565b600080600060608486031215612e1c57600080fd5b6000612e2a86828701612a35565b9350506020612e3b86828701612b0c565b9250506040612e4c86828701612a35565b9150509250925092565b60008060408385031215612e6957600080fd5b6000612e7785828601612a35565b9250506020612e8885828601612c47565b9150509250929050565b600080600060608486031215612ea757600080fd5b6000612eb586828701612a35565b9350506020612ec686828701612c47565b9250506040612ed786828701612a35565b9150509250925092565b60008060008060808587031215612ef757600080fd5b6000612f0587828801612a35565b9450506020612f1687828801612c47565b9350506040612f2787828801612a35565b9250506060612f3887828801612c47565b91505092959194509250565b60008060008060808587031215612f5a57600080fd5b6000612f6887828801612a35565b9450506020612f7987828801612c47565b9350506040612f8a87828801612baa565b9250506060612f9b87828801612baa565b91505092959194509250565b600060208284031215612fb957600080fd5b600082015167ffffffffffffffff811115612fd357600080fd5b612fdf84828501612a74565b91505092915050565b600060208284031215612ffa57600080fd5b600061300884828501612af7565b91505092915050565b60006020828403121561302357600080fd5b600061303184828501612b21565b91505092915050565b60006020828403121561304c57600080fd5b600061305a84828501612b80565b91505092915050565b60006020828403121561307557600080fd5b600061308384828501612b95565b91505092915050565b600060a0828403121561309e57600080fd5b60006130ac84828501612bbf565b91505092915050565b6000602082840312156130c757600080fd5b60006130d584828501612c5c565b91505092915050565b600080604083850312156130f157600080fd5b60006130ff85828601612c5c565b925050602061311085828601612c5c565b9150509250929050565b60008060008060006080868803121561313257600080fd5b600061314088828901612c47565b955050602061315188828901612c47565b945050604061316288828901612c47565b935050606086013567ffffffffffffffff81111561317f57600080fd5b61318b88828901612b36565b92509250509295509295909350565b600080600080600060a086880312156131b257600080fd5b60006131c088828901612c5c565b95505060206131d188828901612c5c565b94505060406131e288828901612c5c565b93505060606131f388828901612c5c565b925050608061320488828901612c5c565b9150509295509295909350565b600061321d8383613238565b60208301905092915050565b6132328161397a565b82525050565b613241816138db565b82525050565b613250816138db565b82525050565b60006132618261387a565b61326b818561389d565b93506132768361386a565b8060005b838110156132a757815161328e8882613211565b975061329983613890565b92505060018101905061327a565b5085935050505092915050565b6132bd8161390b565b82525050565b60006132cf83856138bf565b93506132dc8385846139b0565b82840190509392505050565b60006132f382613885565b6132fd81856138ae565b935061330d8185602086016139bf565b613316816139f2565b840191505092915050565b600061332c82613885565b61333681856138bf565b93506133468185602086016139bf565b80840191505092915050565b61335b81613939565b82525050565b600061336e600c836138ca565b91507f6d756c2d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ae600c836138ca565b91507f7375622d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ee600f836138ca565b91507f6461692d626f72726f772d6661696c00000000000000000000000000000000006000830152602082019050919050565b600061342e6014836138ca565b91507f6d6b722d656e7465722d67656d2d6661696c65640000000000000000000000006000830152602082019050919050565b600061346e600f836138ca565b91507f67656d2d737570706c792d6661696c00000000000000000000000000000000006000830152602082019050919050565b60006134ae600c836138ca565b91507f696e742d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006134ee6014836138ca565b91507f6d6b722d656e7465722d6461692d6661696c65640000000000000000000000006000830152602082019050919050565b61352a81613963565b82525050565b600061353c8286613321565b91506135498284866132c3565b9150819050949350505050565b600060208201905061356b6000830184613247565b92915050565b60006080820190506135866000830187613229565b6135936020830186613247565b6135a06040830185613521565b81810360608301526135b281846132e8565b905095945050505050565b60006040820190506135d26000830185613247565b6135df6020830184613521565b9392505050565b600060208201905081810360008301526136008184613256565b905092915050565b600060208201905061361d60008301846132b4565b92915050565b600060408201905061363860008301856132b4565b6136456020830184613247565b9392505050565b600060608201905061366160008301866132b4565b61366e60208301856132b4565b61367b60408301846132b4565b949350505050565b6000602082019050818103600083015261369c81613361565b9050919050565b600060208201905081810360008301526136bc816133a1565b9050919050565b600060208201905081810360008301526136dc816133e1565b9050919050565b600060208201905081810360008301526136fc81613421565b9050919050565b6000602082019050818103600083015261371c81613461565b9050919050565b6000602082019050818103600083015261373c816134a1565b9050919050565b6000602082019050818103600083015261375c816134e1565b9050919050565b60006020820190506137786000830184613521565b92915050565b60006040820190506137936000830185613521565b6137a06020830184613247565b9392505050565b60006060820190506137bc6000830186613521565b6137c96020830185613247565b6137d66040830184613521565b949350505050565b60006060820190506137f36000830186613521565b6138006020830185613352565b61380d6040830184613352565b949350505050565b6000604051905081810181811067ffffffffffffffff8211171561383857600080fd5b8060405250919050565b600067ffffffffffffffff82111561385957600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006138e682613943565b9050919050565b60006138f882613943565b9050919050565b60008115159050919050565b6000819050919050565b6000613920826138db565b9050919050565b6000613932826138db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139858261398c565b9050919050565b60006139978261399e565b9050919050565b60006139a982613943565b9050919050565b82818337600083830152505050565b60005b838110156139dd5780820151818401526020810190506139c2565b838111156139ec576000848401525b50505050565b6000601f19601f8301169050919050565b613a0c816138db565b8114613a1757600080fd5b50565b613a23816138ed565b8114613a2e57600080fd5b50565b613a3a816138ff565b8114613a4557600080fd5b50565b613a518161390b565b8114613a5c57600080fd5b50565b613a6881613915565b8114613a7357600080fd5b50565b613a7f81613927565b8114613a8a57600080fd5b50565b613a9681613939565b8114613aa157600080fd5b50565b613aad81613963565b8114613ab857600080fd5b50565b613ac48161396d565b8114613acf57600080fd5b5056fea365627a7a72315820a496790ec0ededf96271382ad6922968fdc05a770fd7e03717a4b2033d911e856c6578706572696d656e74616cf564736f6c63430005100040", + "deployedBytecode": "0x6080604052600436106100a75760003560e01c80636d68b70b116100645780636d68b70b146101db57806396e8d72c14610204578063ba727a951461022d578063bcd6deec14610256578063c56167c61461027f578063ddd927b2146102a8576100a7565b8063131fb710146100a95780631558b048146100d25780631d10f231146100fb5780633edec14e1461012457806361d2d7dc146101615780636aa3ee111461019e575b005b3480156100b557600080fd5b506100d060048036036100cb9190810190612caf565b6102d1565b005b3480156100de57600080fd5b506100f960048036036100f49190810190612ee1565b6106ce565b005b34801561010757600080fd5b50610122600480360361011d9190810190612e92565b610743565b005b34801561013057600080fd5b5061014b60048036036101469190810190612e56565b6107b5565b6040516101589190613763565b60405180910390f35b34801561016d57600080fd5b5061018860048036036101839190810190612e56565b6109f7565b6040516101959190613763565b60405180910390f35b3480156101aa57600080fd5b506101c560048036036101c09190810190612e07565b610c2c565b6040516101d29190613763565b60405180910390f35b3480156101e757600080fd5b5061020260048036036101fd9190810190612d41565b610cc4565b005b34801561021057600080fd5b5061022b60048036036102269190810190612f44565b61108d565b005b34801561023957600080fd5b50610254600480360361024f9190810190612ee1565b611102565b005b34801561026257600080fd5b5061027d60048036036102789190810190612d41565b611177565b005b34801561028b57600080fd5b506102a660048036036102a19190810190612db8565b611465565b005b3480156102b457600080fd5b506102cf60048036036102ca919081019061311a565b6115c3565b005b600084905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031e57600080fd5b505afa158015610332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103569190810190612c86565b9050600061036482876107b5565b90506060896040516020016103799190613556565b604051602081830303815290604052868660405160200161039c93929190613530565b604051602081830303815290604052905060008473ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561047257600080fd5b505afa158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104aa9190810190612c86565b90506105368573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f557600080fd5b505afa158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061052d9190810190612c86565b898d6001611102565b6105408a8261215c565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8773ffffffffffffffffffffffffffffffffffffffff1663ee2a94116040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a357600080fd5b505afa1580156105b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105db9190810190612c86565b86866040518563ffffffff1660e01b81526004016105fc9493929190613571565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b505050506106b78573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561067757600080fd5b505afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106af9190810190612c86565b896001610743565b6106c18a8261235e565b5050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16639bb8f8388484846040518463ffffffff1660e01b815260040161070b939291906137a7565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fcafcc6883836040518363ffffffff1660e01b815260040161077e92919061377e565b600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50505050505050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108369190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016108739190613763565b60206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108c39190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016109009190613763565b60206040518083038186803b15801561091857600080fd5b505afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109509190810190613011565b905060008673ffffffffffffffffffffffffffffffffffffffff16638161b120876040518263ffffffff1660e01b815260040161098d9190613763565b60206040518083038186803b1580156109a557600080fd5b505afa1580156109b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109dd9190810190612c86565b90506109eb84828585612560565b94505050505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4057600080fd5b505afa158015610a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a789190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610ab59190613763565b60206040518083038186803b158015610acd57600080fd5b505afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b059190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610b429190613763565b60206040518083038186803b158015610b5a57600080fd5b505afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b929190810190613011565b90508273ffffffffffffffffffffffffffffffffffffffff16632424be5c82846040518363ffffffff1660e01b8152600401610bcf929190613623565b604080518083038186803b158015610be657600080fd5b505afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1e91908101906130de565b508094505050505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff16636090dec584846040518363ffffffff1660e01b8152600401610c69929190613623565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cbb91908101906130b5565b90509392505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d449190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610d819190613763565b60206040518083038186803b158015610d9957600080fd5b505afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd19190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610e0e9190613763565b60206040518083038186803b158015610e2657600080fd5b505afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e5e9190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401610e9d929190613623565b604080518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610eec91908101906130de565b915050610f058784610f0087878888612560565b611465565b610f1f8987610f1388612772565b6000038460000361108d565b610f2b898730886106ce565b8773ffffffffffffffffffffffffffffffffffffffff1663ef693bed30876040518363ffffffff1660e01b8152600401610f669291906135bd565b600060405180830381600087803b158015610f8057600080fd5b505af1158015610f94573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110189190810190613063565b73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b81526004016110509190613763565b600060405180830381600087803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b50505050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8484846040518463ffffffff1660e01b81526004016110ca939291906137de565b600060405180830381600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16630b63fb628484846040518463ffffffff1660e01b815260040161113f939291906137a7565b600060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111f79190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016112349190613763565b60206040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112849190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016112c19190613763565b60206040518083038186803b1580156112d957600080fd5b505afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113119190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401611350929190613623565b604080518083038186803b15801561136757600080fd5b505afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061139f91908101906130de565b9150506113b887846113b387878888612560565b611465565b60006113c489876127c0565b90506113e08a886113d484612772565b6000038560000361108d565b6113ec8a8830846106ce565b8873ffffffffffffffffffffffffffffffffffffffff1663ef693bed30886040518363ffffffff1660e01b81526004016114279291906135bd565b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b5050505050505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114ad57600080fd5b505af11580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e59190810190613063565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b815260040161151f9291906135bd565b600060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b815260040161158c9291906135bd565b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50505050505050565b6000838587010190506115d46129c1565b83836115e3919081019061308c565b905060008160000151905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061166e9190810190612c86565b905060008360400151905060006116898386602001516109f7565b9050606060026040519080825280602002602001820160405280156116bd5781602001602082028038833980820191505090505b50905082816000815181106116ce57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561174e57600080fd5b505afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117869190810190612c86565b8160018151811061179357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060608573ffffffffffffffffffffffffffffffffffffffff1663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561181557600080fd5b505afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061184d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b815260040161188591906135e6565b600060405180830381600087803b15801561189f57600080fd5b505af11580156118b3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506118dc9190810190612fa7565b90506000816000815181106118ed57fe5b602002602001015114611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906136e3565b60405180910390fd5b60008160018151811061194457fe5b60200260200101511461198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613743565b60405180910390fd5b7f4554482d410000000000000000000000000000000000000000000000000000008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd89602001516040518263ffffffff1660e01b81526004016119ea9190613763565b60206040518083038186803b158015611a0257600080fd5b505afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3a9190810190613011565b1415611d7857611b4b858773ffffffffffffffffffffffffffffffffffffffff16638ec9f15f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8a57600080fd5b505afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ac29190810190612c86565b8873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b409190810190612c86565b8a6020015187610cc4565b8573ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9157600080fd5b505afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bc99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16631249c58b846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c1057600080fd5b505af1158015611c24573d6000803e3d6000fd5b505050505060008673ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ca99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8a6040518263ffffffff1660e01b8152600401611ce19190613763565b602060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d3391908101906130b5565b14611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a906136c3565b60405180910390fd5b61214d565b611e178588606001518873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dff9190810190612c86565b8a60200151611e128c6060015189612859565b611177565b6000611e278489608001516128f2565b90508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6f57600080fd5b505afa158015611e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea79190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b8152600401611ee19291906135bd565b602060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f339190810190612fe8565b5060008573ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b8152600401611f6f9190613763565b602060405180830381600087803b158015611f8957600080fd5b505af1158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fc191908101906130b5565b14612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613703565b60405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561204957600080fd5b505afa15801561205d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120819190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8b6040518263ffffffff1660e01b81526004016120b99190613763565b602060405180830381600087803b1580156120d357600080fd5b505af11580156120e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210b91908101906130b5565b1461214b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612142906136c3565b60405180910390fd5b505b50505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121dc919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561225357600080fd5b505afa158015612267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061228b9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123099190810190613011565b6040518463ffffffff1660e01b81526004016123279392919061364c565b600060405180830381600087803b15801561234157600080fd5b505af1158015612355573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a657600080fd5b505afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123de919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561245557600080fd5b505afa158015612469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061248d9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156124d357600080fd5b505afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061250b9190810190613011565b6040518463ffffffff1660e01b81526004016125299392919061364c565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040161259c9190613608565b60a06040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125ec919081019061319a565b50505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b815260040161262f929190613623565b604080518083038186803b15801561264657600080fd5b505afa15801561265a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061267e91908101906130de565b91505060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346886040518263ffffffff1660e01b81526004016126bc9190613556565b60206040518083038186803b1580156126d457600080fd5b505afa1580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061270c91908101906130b5565b9050600061272361271d848661290f565b83612971565b90506b033b2e3c9fd0803ce8000000818161273a57fe5b04945080612754866b033b2e3c9fd0803ce800000061290f565b1061275f5784612764565b600185015b945050505050949350505050565b600081905060008112156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613723565b60405180910390fd5b919050565b6000612851828473ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561280e57600080fd5b505af1158015612822573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061284691908101906130b5565b601203600a0a61290f565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156128a357600080fd5b505af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128db91908101906130b5565b601203600a0a82816128e957fe5b04905092915050565b60008160ff16601203600a0a838161290657fe5b04905092915050565b60008082148061292c575082828385029250828161292957fe5b04145b61296b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296290613683565b60405180910390fd5b92915050565b60008282840391508111156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b2906136a3565b60405180910390fd5b92915050565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff1681525090565b600081359050612a4481613a03565b92915050565b600081519050612a5981613a03565b92915050565b600081359050612a6e81613a1a565b92915050565b600082601f830112612a8557600080fd5b8151612a98612a9382613842565b613815565b91508181835260208401935060208101905083856020840282011115612abd57600080fd5b60005b83811015612aed5781612ad38882612c5c565b845260208401935060208301925050600181019050612ac0565b5050505092915050565b600081519050612b0681613a31565b92915050565b600081359050612b1b81613a48565b92915050565b600081519050612b3081613a48565b92915050565b60008083601f840112612b4857600080fd5b8235905067ffffffffffffffff811115612b6157600080fd5b602083019150836001820283011115612b7957600080fd5b9250929050565b600081519050612b8f81613a5f565b92915050565b600081519050612ba481613a76565b92915050565b600081359050612bb981613a8d565b92915050565b600060a08284031215612bd157600080fd5b612bdb60a0613815565b90506000612beb84828501612a35565b6000830152506020612bff84828501612c47565b6020830152506040612c1384828501612a35565b6040830152506060612c2784828501612a35565b6060830152506080612c3b84828501612c71565b60808301525092915050565b600081359050612c5681613aa4565b92915050565b600081519050612c6b81613aa4565b92915050565b600081359050612c8081613abb565b92915050565b600060208284031215612c9857600080fd5b6000612ca684828501612a4a565b91505092915050565b60008060008060008060a08789031215612cc857600080fd5b6000612cd689828a01612a35565b9650506020612ce789828a01612a5f565b9550506040612cf889828a01612a35565b9450506060612d0989828a01612c47565b935050608087013567ffffffffffffffff811115612d2657600080fd5b612d3289828a01612b36565b92509250509295509295509295565b600080600080600060a08688031215612d5957600080fd5b6000612d6788828901612a35565b9550506020612d7888828901612a35565b9450506040612d8988828901612a35565b9350506060612d9a88828901612c47565b9250506080612dab88828901612c47565b9150509295509295909350565b600080600060608486031215612dcd57600080fd5b6000612ddb86828701612a35565b9350506020612dec86828701612a35565b9250506040612dfd86828701612c47565b9150509250925092565b600080600060608486031215612e1c57600080fd5b6000612e2a86828701612a35565b9350506020612e3b86828701612b0c565b9250506040612e4c86828701612a35565b9150509250925092565b60008060408385031215612e6957600080fd5b6000612e7785828601612a35565b9250506020612e8885828601612c47565b9150509250929050565b600080600060608486031215612ea757600080fd5b6000612eb586828701612a35565b9350506020612ec686828701612c47565b9250506040612ed786828701612a35565b9150509250925092565b60008060008060808587031215612ef757600080fd5b6000612f0587828801612a35565b9450506020612f1687828801612c47565b9350506040612f2787828801612a35565b9250506060612f3887828801612c47565b91505092959194509250565b60008060008060808587031215612f5a57600080fd5b6000612f6887828801612a35565b9450506020612f7987828801612c47565b9350506040612f8a87828801612baa565b9250506060612f9b87828801612baa565b91505092959194509250565b600060208284031215612fb957600080fd5b600082015167ffffffffffffffff811115612fd357600080fd5b612fdf84828501612a74565b91505092915050565b600060208284031215612ffa57600080fd5b600061300884828501612af7565b91505092915050565b60006020828403121561302357600080fd5b600061303184828501612b21565b91505092915050565b60006020828403121561304c57600080fd5b600061305a84828501612b80565b91505092915050565b60006020828403121561307557600080fd5b600061308384828501612b95565b91505092915050565b600060a0828403121561309e57600080fd5b60006130ac84828501612bbf565b91505092915050565b6000602082840312156130c757600080fd5b60006130d584828501612c5c565b91505092915050565b600080604083850312156130f157600080fd5b60006130ff85828601612c5c565b925050602061311085828601612c5c565b9150509250929050565b60008060008060006080868803121561313257600080fd5b600061314088828901612c47565b955050602061315188828901612c47565b945050604061316288828901612c47565b935050606086013567ffffffffffffffff81111561317f57600080fd5b61318b88828901612b36565b92509250509295509295909350565b600080600080600060a086880312156131b257600080fd5b60006131c088828901612c5c565b95505060206131d188828901612c5c565b94505060406131e288828901612c5c565b93505060606131f388828901612c5c565b925050608061320488828901612c5c565b9150509295509295909350565b600061321d8383613238565b60208301905092915050565b6132328161397a565b82525050565b613241816138db565b82525050565b613250816138db565b82525050565b60006132618261387a565b61326b818561389d565b93506132768361386a565b8060005b838110156132a757815161328e8882613211565b975061329983613890565b92505060018101905061327a565b5085935050505092915050565b6132bd8161390b565b82525050565b60006132cf83856138bf565b93506132dc8385846139b0565b82840190509392505050565b60006132f382613885565b6132fd81856138ae565b935061330d8185602086016139bf565b613316816139f2565b840191505092915050565b600061332c82613885565b61333681856138bf565b93506133468185602086016139bf565b80840191505092915050565b61335b81613939565b82525050565b600061336e600c836138ca565b91507f6d756c2d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ae600c836138ca565b91507f7375622d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ee600f836138ca565b91507f6461692d626f72726f772d6661696c00000000000000000000000000000000006000830152602082019050919050565b600061342e6014836138ca565b91507f6d6b722d656e7465722d67656d2d6661696c65640000000000000000000000006000830152602082019050919050565b600061346e600f836138ca565b91507f67656d2d737570706c792d6661696c00000000000000000000000000000000006000830152602082019050919050565b60006134ae600c836138ca565b91507f696e742d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006134ee6014836138ca565b91507f6d6b722d656e7465722d6461692d6661696c65640000000000000000000000006000830152602082019050919050565b61352a81613963565b82525050565b600061353c8286613321565b91506135498284866132c3565b9150819050949350505050565b600060208201905061356b6000830184613247565b92915050565b60006080820190506135866000830187613229565b6135936020830186613247565b6135a06040830185613521565b81810360608301526135b281846132e8565b905095945050505050565b60006040820190506135d26000830185613247565b6135df6020830184613521565b9392505050565b600060208201905081810360008301526136008184613256565b905092915050565b600060208201905061361d60008301846132b4565b92915050565b600060408201905061363860008301856132b4565b6136456020830184613247565b9392505050565b600060608201905061366160008301866132b4565b61366e60208301856132b4565b61367b60408301846132b4565b949350505050565b6000602082019050818103600083015261369c81613361565b9050919050565b600060208201905081810360008301526136bc816133a1565b9050919050565b600060208201905081810360008301526136dc816133e1565b9050919050565b600060208201905081810360008301526136fc81613421565b9050919050565b6000602082019050818103600083015261371c81613461565b9050919050565b6000602082019050818103600083015261373c816134a1565b9050919050565b6000602082019050818103600083015261375c816134e1565b9050919050565b60006020820190506137786000830184613521565b92915050565b60006040820190506137936000830185613521565b6137a06020830184613247565b9392505050565b60006060820190506137bc6000830186613521565b6137c96020830185613247565b6137d66040830184613521565b949350505050565b60006060820190506137f36000830186613521565b6138006020830185613352565b61380d6040830184613352565b949350505050565b6000604051905081810181811067ffffffffffffffff8211171561383857600080fd5b8060405250919050565b600067ffffffffffffffff82111561385957600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006138e682613943565b9050919050565b60006138f882613943565b9050919050565b60008115159050919050565b6000819050919050565b6000613920826138db565b9050919050565b6000613932826138db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139858261398c565b9050919050565b60006139978261399e565b9050919050565b60006139a982613943565b9050919050565b82818337600083830152505050565b60005b838110156139dd5780820151818401526020810190506139c2565b838111156139ec576000848401525b50505050565b6000601f19601f8301169050919050565b613a0c816138db565b8114613a1757600080fd5b50565b613a23816138ed565b8114613a2e57600080fd5b50565b613a3a816138ff565b8114613a4557600080fd5b50565b613a518161390b565b8114613a5c57600080fd5b50565b613a6881613915565b8114613a7357600080fd5b50565b613a7f81613927565b8114613a8a57600080fd5b50565b613a9681613939565b8114613aa157600080fd5b50565b613aad81613963565b8114613ab857600080fd5b50565b613ac48161396d565b8114613acf57600080fd5b5056fea365627a7a72315820a496790ec0ededf96271382ad6922968fdc05a770fd7e03717a4b2033d911e856c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "845:8070:28:-;;;938:24;8:9:-1;5:2;;;30:1;27;20:12;5:2;938:24:28;845:8070;;;;;;", "deployedSourceMap": "845:8070:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7150:1763;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7150:1763:28;;;;;;;;;;;;;;;;:::i;:::-;;6211:166:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6211:166:22;;;;;;;;;;;;;;;;:::i;:::-;;5884:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5884:143:22;;;;;;;;;;;;;;;;:::i;:::-;;2153:360:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2153:360:28;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2519:455;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2519:455:28;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5707:171:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5707:171:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6554:1056;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6554:1056:22;;;;;;;;;;;;;;;;:::i;:::-;;6383:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6383:165:22;;;;;;;;;;;;;;;;:::i;:::-;;6033:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6033:172:22;;;;;;;;;;;;;;;;:::i;:::-;;7616:945;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7616:945:22;;;;;;;;;;;;;;;;:::i;:::-;;2663:409;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2663:409:22;;;;;;;;;;;;;;;;:::i;:::-;;3066:3151:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3066:3151:28;;;;;;;;;;;;;;;;:::i;:::-;;7150:1763;7431:31;7481:22;7431:73;;7567:18;7588:15;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7588:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7588:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7588:38:28;;;;;;;;;7567:59;;7657:12;7672:31;7685:10;7697:5;7672:12;:31::i;:::-;7657:46;;7854:53;7951:24;7940:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7940:36:28;;;7990:30;;7910:120;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7910:120:28;;;7854:176;;8085:24;8185:15;:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8185:55:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8185:55:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8185:55:28;;;;;;;;;8138:131;;;:133;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8138:133:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8138:133:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8138:133:28;;;;;;;;;8085:196;;8292:84;8301:15;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8301:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8301:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8301:38:28;;;;;;;;;8341:5;8348:24;8374:1;8292:8;:84::i;:::-;8386:56;8404:15;8429:11;8386:17;:56::i;:::-;8453:11;:21;;;8488:15;8517;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8517:28:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8517:28:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8517:28:28;;;;;;;;;8559:7;8580:40;8453:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8453:177:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8453:177:28;;;;8716:63;8721:15;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8721:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8721:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8721:38:28;;;;;;;;;8761:5;8776:1;8716:4;:63::i;:::-;8850:56;8868:15;8893:11;8850:17;:56::i;:::-;7150:1763;;;;;;;;;;;:::o;6211:166:22:-;6342:7;6330:25;;;6356:3;6361;6366;6330:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6330:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6330:40:22;;;;6211:166;;;;:::o;5884:143::-;5997:7;5985:25;;;6011:3;6016;5985:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5985:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5985:35:22;;;;5884:143;;;:::o;2153:360:28:-;2223:9;2248:11;2274:7;2262:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:26:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2262:26:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2262:26:28;;;;;;;;;2248:40;;2298:11;2324:7;2312:25;;;2338:3;2312:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2312:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2312:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2312:30:28;;;;;;;;;2298:44;;2352:11;2378:7;2366:25;;;2392:3;2366:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2366:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2366:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2366:30:28;;;;;;;;;2352:44;;2406:13;2434:7;2422:25;;;2448:3;2422:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2422:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2422:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2422:30:28;;;;;;;;;2406:46;;2470:36;2485:3;2490:5;2497:3;2502;2470:14;:36::i;:::-;2463:43;;2153:360;;;;;;;;:::o;2519:455::-;2617:8;2637:11;2663:7;2651:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2651:26:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2651:26:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2651:26:28;;;;;;;;;2637:40;;2687:11;2713:7;2701:25;;;2727:3;2701:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2701:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2701:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2701:30:28;;;;;;;;;2687:44;;2741:11;2767:7;2755:25;;;2781:3;2755:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2755:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2755:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2755:30:28;;;;;;;;;2741:44;;2948:3;2940:17;;;2958:3;2963;2940:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2940:27:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2940:27:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2940:27:28;;;;;;;;;2931:36;;;;;2519:455;;;;;;;:::o;5707:171:22:-;5810:8;5848:7;5836:25;;;5862:3;5867;5836:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5836:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5836:35:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5836:35:22;;;;;;;;;5830:41;;5707:171;;;;;:::o;6554:1056::-;6716:11;6742:7;6730:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6730:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6730:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6730:26:22;;;;;;;;;6716:40;;6766:11;6792:7;6780:25;;;6806:3;6780:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6780:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6780:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6780:30:22;;;;;;;;;6766:44;;6820:11;6846:7;6834:25;;;6860:3;6834:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6834:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6834:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6834:30:22;;;;;;;;;6820:44;;6877:8;6897:3;6889:17;;;6907:3;6912;6889:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6889:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6889:27:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6889:27:22;;;;;;;;;6874:42;;;6968:62;6981:7;6990:3;6995:34;7010:3;7015;7020;7025;6995:14;:34::i;:::-;6968:12;:62::i;:::-;7108:101;7126:7;7147:3;7165:11;7171:4;7165:5;:11::i;:::-;7164:12;;7195:3;7190:9;;7108:4;:101::i;:::-;7283:39;7288:7;7297:3;7310:4;7317;7283;:39::i;:::-;7401:7;7389:25;;;7423:4;7430;7389:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7389:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7389:46:22;;;;7489:7;7477:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7477:26:22;;;;;;;;;:35;;;7513:4;7477:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:41:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:41:22;;;;6554:1056;;;;;;;;;:::o;6383:165::-;6511:7;6499:25;;;6525:3;6530:4;6536;6499:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6499:42:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6499:42:22;;;;6383:165;;;;:::o;6033:172::-;6167:7;6155:29;;;6185:3;6190;6195:2;6155:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6155:43:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6155:43:22;;;;6033:172;;;;:::o;7616:945::-;7778:11;7804:7;7792:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7792:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7792:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7792:26:22;;;;;;;;;7778:40;;7828:11;7854:7;7842:25;;;7868:3;7842:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7842:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7842:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7842:30:22;;;;;;;;;7828:44;;7882:11;7908:7;7896:25;;;7922:3;7896:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7896:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7896:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7896:30:22;;;;;;;;;7882:44;;7939:8;7959:3;7951:17;;;7969:3;7974;7951:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7951:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7951:27:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7951:27:22;;;;;;;;;7936:42;;;8030:62;8043:7;8052:3;8057:34;8072:3;8077;8082;8087;8057:14;:34::i;:::-;8030:12;:62::i;:::-;8102:10;8115:26;8127:7;8136:4;8115:11;:26::i;:::-;8102:39;;8220:102;8238:7;8259:3;8277:12;8283:5;8277;:12::i;:::-;8276:13;;8308:3;8303:9;;8220:4;:102::i;:::-;8396:40;8401:7;8410:3;8423:4;8430:5;8396:4;:40::i;:::-;8520:7;8508:25;;;8542:4;8549;8508:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8508:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8508:46:22;;;;7616:945;;;;;;;;;;:::o;2663:409::-;2962:3;2950:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:22:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2950:22:22;;;;;;;;;:30;;;2981:3;2986;2950:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:40:22;;;;3046:3;3034:21;;;3056:3;3061;3034:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3034:31:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3034:31:22;;;;2663:409;;;:::o;3066:3151:28:-;3259:14;3297:12;3286:8;3276:7;:18;:33;3259:50;;3348:43;;:::i;:::-;3405:5;;3394:45;;;;;;;;;3348:91;;3483:31;3533:11;:34;;;3483:85;;3578:18;3599:15;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3599:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3599:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3599:38:28;;;;;;;;;3578:59;;3647:31;3681:11;:35;;;3647:69;;3770:17;3790:49;3809:10;3821:11;:17;;;3790:18;:49::i;:::-;3770:69;;3926:35;3978:1;3964:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;3964:16:28;;;;3926:54;;4014:23;3990:18;4009:1;3990:21;;;;;;;;;;;;;:47;;;;;;;;;;;4071:15;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4071:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4071:29:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4071:29:28;;;;;;;;;4047:18;4066:1;4047:21;;;;;;;;;;;;;:53;;;;;;;;;;;4111:31;4171:15;:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4171:44:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4171:44:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4171:44:28;;;;;;;;;4145:93;;;4239:18;4145:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4145:113:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4145:113:28;;;;;;39:16:-1;36:1;17:17;2:54;4145:113:28;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4145:113:28;;;;;;;;;4111:147;;4301:1;4277:17;4295:1;4277:20;;;;;;;;;;;;;;:25;4269:58;;;;;;;;;;;;;;;;;;;;;;4369:1;4345:17;4363:1;4345:20;;;;;;;;;;;;;;:25;4337:58;;;;;;;;;;;;;;;;;;;;;;4461:16;4422:10;4410:28;;;4439:11;:17;;;4410:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4410:47:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4410:47:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4410:47:28;;;;;;;;;:67;4406:1805;;;4493:224;4528:10;4556:15;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4556:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4556:32:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4556:32:28;;;;;;;;;4606:15;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4606:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4606:32:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4606:32:28;;;;;;;;;4656:11;:17;;;4691:12;4493:17;:224::i;:::-;4792:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4792:31:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4792:31:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4792:31:28;;;;;;;;;4784:45;;;4836:12;4784:67;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4784:67:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4784:67:28;;;;;4950:1;4898:15;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4898:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4898:29:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4898:29:28;;;;;;;;;4890:45;;;4936:9;4890:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4890:56:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4890:56:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4890:56:28;;;;;;;;;:61;4865:135;;;;;;;;;;;;;;;;;;;;;;4406:1805;;;5055:340;5090:10;5118:11;:33;;;5169:15;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5169:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5169:32:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5169:32:28;;;;;;;;;5219:11;:17;;;5254:127;5296:11;:33;;;5351:12;5254:20;:127::i;:::-;5055:17;:340::i;:::-;5471:23;5497:95;5534:12;5548:11;:30;;;5497:19;:95::i;:::-;5471:121;;5702:23;5694:43;;;:45;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5694:45:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5694:45:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5694:45:28;;;;;;;;;5687:78;;;5766:23;5791:18;5687:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5687:123:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5687:123:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5687:123:28;;;;;;;;;;6001:1;5910:23;5902:37;;;5961:18;5902:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5902:95:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5902:95:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5902:95:28;;;;;;;;;:100;5877:174;;;;;;;;;;;;;;;;;;;;;;6150:1;6098:15;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6098:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6098:29:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6098:29:28;;;;;;;;;6090:45;;;6136:9;6090:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6090:56:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6090:56:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6090:56:28;;;;;;;;;:61;6065:135;;;;;;;;;;;;;;;;;;;;;;4406:1805;;3066:3151;;;;;;;;;;;;;:::o;1211:293::-;1300:9;1329:12;1320:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1320:34:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1320:34:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1320:34:28;;;;;;;;;1300:55;;1374:1;1366:17;;;1421:3;1405:21;;1397:30;;;1449:1;1441:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1441:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1441:16:28;;;;;;;;;1479:1;1471:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1471:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1471:16:28;;;;;;;;;1366:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1366:131:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1366:131:28;;;;1211:293;;;:::o;1510:::-;1599:9;1628:12;1619:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1619:34:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1619:34:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1619:34:28;;;;;;;;;1599:55;;1673:1;1665:17;;;1720:3;1704:21;;1696:30;;;1748:1;1740:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1740:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1740:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1740:16:28;;;;;;;;;1778:1;1770:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1770:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1770:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1770:16:28;;;;;;;;;1665:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1665:131:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1665:131:28;;;;1510:293;;;:::o;5058:643:22:-;5195:8;5259:9;5283:3;5275:17;;;5293:3;5275:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5275:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5275:22:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5275:22:22;;;;;;;;;5256:41;;;;;;5354:8;5374:3;5366:17;;;5384:3;5389;5366:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5366:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5366:27:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5366:27:22;;;;;;;;;5351:42;;;5448:8;5467:3;5459:16;;;5476:3;5459:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5459:21:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5459:21:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5459:21:22;;;;;;;;;5448:32;;5491:8;5502:24;5506:14;5510:3;5515:4;5506:3;:14::i;:::-;5522:3;5502;:24::i;:::-;5491:35;;2458:8;5542:3;:9;;;;;;5536:15;;5675:3;5659:13;5663:3;2458:8;5659:3;:13::i;:::-;:19;:35;;5691:3;5659:35;;;5687:1;5681:3;:7;5659:35;5653:41;;5058:643;;;;;;;;;;:::o;3272:121::-;3318:5;3343:1;3335:10;;3368:1;3363;:6;;3355:31;;;;;;;;;;;;;;;;;;;;;;3272:121;;;:::o;3504:398::-;3573:11;3812:83;3829:3;3870:7;3858:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3858:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3858:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3858:26:22;;;;;;;;;3853:2;:31;3846:2;:39;3812:3;:83::i;:::-;3806:89;;3504:398;;;;:::o;1959:155:28:-;2037:4;2091:7;2079:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2079:26:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2079:26:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2079:26:28;;;;;;;;;2074:2;:31;2067:2;:39;2060:3;:47;;;;;;2053:54;;1959:155;;;;:::o;1809:144::-;1885:4;1935:8;1930:14;;1925:2;:19;1918:2;:27;1908:6;:38;;;;;;1901:45;;1809:144;;;;:::o;2500:132:22:-;2552:6;2583:1;2578;:6;:30;;;;2607:1;2602;2597;2593;:5;2589:9;;;2588:15;;;;;;:20;2578:30;2570:55;;;;;;;;;;;;;;;;;;;;;;2500:132;;;;:::o;3148:118::-;3200:6;3241:1;3235;3231;:5;3227:9;;;3226:16;;3218:41;;;;;;;;;;;;;;;;;;;;;;3148:118;;;;:::o;845:8070:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:146;;371:6;358:20;349:29;;383:41;418:5;383:41;;;343:86;;;;;454:722;;582:3;575:4;567:6;563:17;559:27;549:2;;600:1;597;590:12;549:2;630:6;624:13;652:80;667:64;724:6;667:64;;;652:80;;;643:89;;749:5;774:6;767:5;760:21;804:4;796:6;792:17;782:27;;826:4;821:3;817:14;810:21;;879:6;926:3;918:4;910:6;906:17;901:3;897:27;894:36;891:2;;;943:1;940;933:12;891:2;968:1;953:217;978:6;975:1;972:13;953:217;;;1036:3;1058:48;1102:3;1090:10;1058:48;;;1053:3;1046:61;1130:4;1125:3;1121:14;1114:21;;1158:4;1153:3;1149:14;1142:21;;1010:160;1000:1;997;993:9;988:14;;953:217;;;957:14;542:634;;;;;;;;1184:128;;1265:6;1259:13;1250:22;;1277:30;1301:5;1277:30;;;1244:68;;;;;1319:130;;1399:6;1386:20;1377:29;;1411:33;1438:5;1411:33;;;1371:78;;;;;1456:134;;1540:6;1534:13;1525:22;;1552:33;1579:5;1552:33;;;1519:71;;;;;1611:336;;;1725:3;1718:4;1710:6;1706:17;1702:27;1692:2;;1743:1;1740;1733:12;1692:2;1776:6;1763:20;1753:30;;1803:18;1795:6;1792:30;1789:2;;;1835:1;1832;1825:12;1789:2;1869:4;1861:6;1857:17;1845:29;;1920:3;1912:4;1904:6;1900:17;1890:8;1886:32;1883:41;1880:2;;;1937:1;1934;1927:12;1880:2;1685:262;;;;;;1955:174;;2059:6;2053:13;2044:22;;2071:53;2118:5;2071:53;;;2038:91;;;;;2136:166;;2236:6;2230:13;2221:22;;2248:49;2291:5;2248:49;;;2215:87;;;;;2309:128;;2388:6;2375:20;2366:29;;2400:32;2426:5;2400:32;;;2360:77;;;;;2500:980;;2627:4;2615:9;2610:3;2606:19;2602:30;2599:2;;;2645:1;2642;2635:12;2599:2;2663:20;2678:4;2663:20;;;2654:29;;2751:1;2783:49;2828:3;2819:6;2808:9;2804:22;2783:49;;;2776:4;2769:5;2765:16;2758:75;2693:151;2895:2;2928:49;2973:3;2964:6;2953:9;2949:22;2928:49;;;2921:4;2914:5;2910:16;2903:75;2854:135;3058:2;3091:49;3136:3;3127:6;3116:9;3112:22;3091:49;;;3084:4;3077:5;3073:16;3066:75;2999:153;3219:2;3252:49;3297:3;3288:6;3277:9;3273:22;3252:49;;;3245:4;3238:5;3234:16;3227:75;3162:151;3377:3;3411:47;3454:3;3445:6;3434:9;3430:22;3411:47;;;3404:4;3397:5;3393:16;3386:73;3323:147;2593:887;;;;;3487:130;;3567:6;3554:20;3545:29;;3579:33;3606:5;3579:33;;;3539:78;;;;;3624:134;;3708:6;3702:13;3693:22;;3720:33;3747:5;3720:33;;;3687:71;;;;;3765:126;;3843:6;3830:20;3821:29;;3855:31;3880:5;3855:31;;;3815:76;;;;;3898:263;;4013:2;4001:9;3992:7;3988:23;3984:32;3981:2;;;4029:1;4026;4019:12;3981:2;4064:1;4081:64;4137:7;4128:6;4117:9;4113:22;4081:64;;;4071:74;;4043:108;3975:186;;;;;4168:883;;;;;;;4367:3;4355:9;4346:7;4342:23;4338:33;4335:2;;;4384:1;4381;4374:12;4335:2;4419:1;4436:53;4481:7;4472:6;4461:9;4457:22;4436:53;;;4426:63;;4398:97;4526:2;4544:61;4597:7;4588:6;4577:9;4573:22;4544:61;;;4534:71;;4505:106;4642:2;4660:53;4705:7;4696:6;4685:9;4681:22;4660:53;;;4650:63;;4621:98;4750:2;4768:53;4813:7;4804:6;4793:9;4789:22;4768:53;;;4758:63;;4729:98;4886:3;4875:9;4871:19;4858:33;4911:18;4903:6;4900:30;4897:2;;;4943:1;4940;4933:12;4897:2;4971:64;5027:7;5018:6;5007:9;5003:22;4971:64;;;4961:74;;;;4837:204;4329:722;;;;;;;;;5058:743;;;;;;5230:3;5218:9;5209:7;5205:23;5201:33;5198:2;;;5247:1;5244;5237:12;5198:2;5282:1;5299:53;5344:7;5335:6;5324:9;5320:22;5299:53;;;5289:63;;5261:97;5389:2;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;;;5397:63;;5368:98;5497:2;5515:53;5560:7;5551:6;5540:9;5536:22;5515:53;;;5505:63;;5476:98;5605:2;5623:53;5668:7;5659:6;5648:9;5644:22;5623:53;;;5613:63;;5584:98;5713:3;5732:53;5777:7;5768:6;5757:9;5753:22;5732:53;;;5722:63;;5692:99;5192:609;;;;;;;;;5808:491;;;;5946:2;5934:9;5925:7;5921:23;5917:32;5914:2;;;5962:1;5959;5952:12;5914:2;5997:1;6014:53;6059:7;6050:6;6039:9;6035:22;6014:53;;;6004:63;;5976:97;6104:2;6122:53;6167:7;6158:6;6147:9;6143:22;6122:53;;;6112:63;;6083:98;6212:2;6230:53;6275:7;6266:6;6255:9;6251:22;6230:53;;;6220:63;;6191:98;5908:391;;;;;;6306:491;;;;6444:2;6432:9;6423:7;6419:23;6415:32;6412:2;;;6460:1;6457;6450:12;6412:2;6495:1;6512:53;6557:7;6548:6;6537:9;6533:22;6512:53;;;6502:63;;6474:97;6602:2;6620:53;6665:7;6656:6;6645:9;6641:22;6620:53;;;6610:63;;6581:98;6710:2;6728:53;6773:7;6764:6;6753:9;6749:22;6728:53;;;6718:63;;6689:98;6406:391;;;;;;6804:366;;;6925:2;6913:9;6904:7;6900:23;6896:32;6893:2;;;6941:1;6938;6931:12;6893:2;6976:1;6993:53;7038:7;7029:6;7018:9;7014:22;6993:53;;;6983:63;;6955:97;7083:2;7101:53;7146:7;7137:6;7126:9;7122:22;7101:53;;;7091:63;;7062:98;6887:283;;;;;;7177:491;;;;7315:2;7303:9;7294:7;7290:23;7286:32;7283:2;;;7331:1;7328;7321:12;7283:2;7366:1;7383:53;7428:7;7419:6;7408:9;7404:22;7383:53;;;7373:63;;7345:97;7473:2;7491:53;7536:7;7527:6;7516:9;7512:22;7491:53;;;7481:63;;7452:98;7581:2;7599:53;7644:7;7635:6;7624:9;7620:22;7599:53;;;7589:63;;7560:98;7277:391;;;;;;7675:617;;;;;7830:3;7818:9;7809:7;7805:23;7801:33;7798:2;;;7847:1;7844;7837:12;7798:2;7882:1;7899:53;7944:7;7935:6;7924:9;7920:22;7899:53;;;7889:63;;7861:97;7989:2;8007:53;8052:7;8043:6;8032:9;8028:22;8007:53;;;7997:63;;7968:98;8097:2;8115:53;8160:7;8151:6;8140:9;8136:22;8115:53;;;8105:63;;8076:98;8205:2;8223:53;8268:7;8259:6;8248:9;8244:22;8223:53;;;8213:63;;8184:98;7792:500;;;;;;;;8299:613;;;;;8452:3;8440:9;8431:7;8427:23;8423:33;8420:2;;;8469:1;8466;8459:12;8420:2;8504:1;8521:53;8566:7;8557:6;8546:9;8542:22;8521:53;;;8511:63;;8483:97;8611:2;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;;;8619:63;;8590:98;8719:2;8737:52;8781:7;8772:6;8761:9;8757:22;8737:52;;;8727:62;;8698:97;8826:2;8844:52;8888:7;8879:6;8868:9;8864:22;8844:52;;;8834:62;;8805:97;8414:498;;;;;;;;8919:392;;9059:2;9047:9;9038:7;9034:23;9030:32;9027:2;;;9075:1;9072;9065:12;9027:2;9131:1;9120:9;9116:17;9110:24;9154:18;9146:6;9143:30;9140:2;;;9186:1;9183;9176:12;9140:2;9206:89;9287:7;9278:6;9267:9;9263:22;9206:89;;;9196:99;;9089:212;9021:290;;;;;9318:257;;9430:2;9418:9;9409:7;9405:23;9401:32;9398:2;;;9446:1;9443;9436:12;9398:2;9481:1;9498:61;9551:7;9542:6;9531:9;9527:22;9498:61;;;9488:71;;9460:105;9392:183;;;;;9582:263;;9697:2;9685:9;9676:7;9672:23;9668:32;9665:2;;;9713:1;9710;9703:12;9665:2;9748:1;9765:64;9821:7;9812:6;9801:9;9797:22;9765:64;;;9755:74;;9727:108;9659:186;;;;;9852:303;;9987:2;9975:9;9966:7;9962:23;9958:32;9955:2;;;10003:1;10000;9993:12;9955:2;10038:1;10055:84;10131:7;10122:6;10111:9;10107:22;10055:84;;;10045:94;;10017:128;9949:206;;;;;10162:295;;10293:2;10281:9;10272:7;10268:23;10264:32;10261:2;;;10309:1;10306;10299:12;10261:2;10344:1;10361:80;10433:7;10424:6;10413:9;10409:22;10361:80;;;10351:90;;10323:124;10255:202;;;;;10464:318;;10606:3;10594:9;10585:7;10581:23;10577:33;10574:2;;;10623:1;10620;10613:12;10574:2;10658:1;10675:91;10758:7;10749:6;10738:9;10734:22;10675:91;;;10665:101;;10637:135;10568:214;;;;;10789:263;;10904:2;10892:9;10883:7;10879:23;10875:32;10872:2;;;10920:1;10917;10910:12;10872:2;10955:1;10972:64;11028:7;11019:6;11008:9;11004:22;10972:64;;;10962:74;;10934:108;10866:186;;;;;11059:399;;;11191:2;11179:9;11170:7;11166:23;11162:32;11159:2;;;11207:1;11204;11197:12;11159:2;11242:1;11259:64;11315:7;11306:6;11295:9;11291:22;11259:64;;;11249:74;;11221:108;11360:2;11378:64;11434:7;11425:6;11414:9;11410:22;11378:64;;;11368:74;;11339:109;11153:305;;;;;;11465:741;;;;;;11639:3;11627:9;11618:7;11614:23;11610:33;11607:2;;;11656:1;11653;11646:12;11607:2;11691:1;11708:53;11753:7;11744:6;11733:9;11729:22;11708:53;;;11698:63;;11670:97;11798:2;11816:53;11861:7;11852:6;11841:9;11837:22;11816:53;;;11806:63;;11777:98;11906:2;11924:53;11969:7;11960:6;11949:9;11945:22;11924:53;;;11914:63;;11885:98;12042:2;12031:9;12027:18;12014:32;12066:18;12058:6;12055:30;12052:2;;;12098:1;12095;12088:12;12052:2;12126:64;12182:7;12173:6;12162:9;12158:22;12126:64;;;12116:74;;;;11993:203;11601:605;;;;;;;;;12213:809;;;;;;12396:3;12384:9;12375:7;12371:23;12367:33;12364:2;;;12413:1;12410;12403:12;12364:2;12448:1;12465:64;12521:7;12512:6;12501:9;12497:22;12465:64;;;12455:74;;12427:108;12566:2;12584:64;12640:7;12631:6;12620:9;12616:22;12584:64;;;12574:74;;12545:109;12685:2;12703:64;12759:7;12750:6;12739:9;12735:22;12703:64;;;12693:74;;12664:109;12804:2;12822:64;12878:7;12869:6;12858:9;12854:22;12822:64;;;12812:74;;12783:109;12923:3;12942:64;12998:7;12989:6;12978:9;12974:22;12942:64;;;12932:74;;12902:110;12358:664;;;;;;;;;13030:173;;13117:46;13159:3;13151:6;13117:46;;;13192:4;13187:3;13183:14;13169:28;;13110:93;;;;;13211:142;13302:45;13341:5;13302:45;;;13297:3;13290:58;13284:69;;;13360:103;13433:24;13451:5;13433:24;;;13428:3;13421:37;13415:48;;;13470:113;13553:24;13571:5;13553:24;;;13548:3;13541:37;13535:48;;;13621:690;;13766:54;13814:5;13766:54;;;13833:86;13912:6;13907:3;13833:86;;;13826:93;;13940:56;13990:5;13940:56;;;14016:7;14044:1;14029:260;14054:6;14051:1;14048:13;14029:260;;;14121:6;14115:13;14142:63;14201:3;14186:13;14142:63;;;14135:70;;14222:60;14275:6;14222:60;;;14212:70;;14086:203;14076:1;14073;14069:9;14064:14;;14029:260;;;14033:14;14302:3;14295:10;;13745:566;;;;;;;;14319:113;14402:24;14420:5;14402:24;;;14397:3;14390:37;14384:48;;;14462:310;;14594:88;14675:6;14670:3;14594:88;;;14587:95;;14694:43;14730:6;14725:3;14718:5;14694:43;;;14759:6;14754:3;14750:16;14743:23;;14580:192;;;;;;14780:343;;14890:38;14922:5;14890:38;;;14940:70;15003:6;14998:3;14940:70;;;14933:77;;15015:52;15060:6;15055:3;15048:4;15041:5;15037:16;15015:52;;;15088:29;15110:6;15088:29;;;15083:3;15079:39;15072:46;;14870:253;;;;;;15130:356;;15258:38;15290:5;15258:38;;;15308:88;15389:6;15384:3;15308:88;;;15301:95;;15401:52;15446:6;15441:3;15434:4;15427:5;15423:16;15401:52;;;15474:6;15469:3;15465:16;15458:23;;15238:248;;;;;;15493:110;15574:23;15591:5;15574:23;;;15569:3;15562:36;15556:47;;;15611:312;;15771:67;15835:2;15830:3;15771:67;;;15764:74;;15871:14;15867:1;15862:3;15858:11;15851:35;15914:2;15909:3;15905:12;15898:19;;15757:166;;;;15932:312;;16092:67;16156:2;16151:3;16092:67;;;16085:74;;16192:14;16188:1;16183:3;16179:11;16172:35;16235:2;16230:3;16226:12;16219:19;;16078:166;;;;16253:315;;16413:67;16477:2;16472:3;16413:67;;;16406:74;;16513:17;16509:1;16504:3;16500:11;16493:38;16559:2;16554:3;16550:12;16543:19;;16399:169;;;;16577:320;;16737:67;16801:2;16796:3;16737:67;;;16730:74;;16837:22;16833:1;16828:3;16824:11;16817:43;16888:2;16883:3;16879:12;16872:19;;16723:174;;;;16906:315;;17066:67;17130:2;17125:3;17066:67;;;17059:74;;17166:17;17162:1;17157:3;17153:11;17146:38;17212:2;17207:3;17203:12;17196:19;;17052:169;;;;17230:312;;17390:67;17454:2;17449:3;17390:67;;;17383:74;;17490:14;17486:1;17481:3;17477:11;17470:35;17533:2;17528:3;17524:12;17517:19;;17376:166;;;;17551:320;;17711:67;17775:2;17770:3;17711:67;;;17704:74;;17811:22;17807:1;17802:3;17798:11;17791:43;17862:2;17857:3;17853:12;17846:19;;17697:174;;;;17879:113;17962:24;17980:5;17962:24;;;17957:3;17950:37;17944:48;;;17999:439;;18199:93;18288:3;18279:6;18199:93;;;18192:100;;18310:103;18409:3;18400:6;18392;18310:103;;;18303:110;;18430:3;18423:10;;18180:258;;;;;;;18445:213;;18563:2;18552:9;18548:18;18540:26;;18577:71;18645:1;18634:9;18630:17;18621:6;18577:71;;;18534:124;;;;;18665:647;;18893:3;18882:9;18878:19;18870:27;;18908:79;18984:1;18973:9;18969:17;18960:6;18908:79;;;18998:72;19066:2;19055:9;19051:18;19042:6;18998:72;;;19081;19149:2;19138:9;19134:18;19125:6;19081:72;;;19201:9;19195:4;19191:20;19186:2;19175:9;19171:18;19164:48;19226:76;19297:4;19288:6;19226:76;;;19218:84;;18864:448;;;;;;;;19319:324;;19465:2;19454:9;19450:18;19442:26;;19479:71;19547:1;19536:9;19532:17;19523:6;19479:71;;;19561:72;19629:2;19618:9;19614:18;19605:6;19561:72;;;19436:207;;;;;;19650:361;;19818:2;19807:9;19803:18;19795:26;;19868:9;19862:4;19858:20;19854:1;19843:9;19839:17;19832:47;19893:108;19996:4;19987:6;19893:108;;;19885:116;;19789:222;;;;;20018:213;;20136:2;20125:9;20121:18;20113:26;;20150:71;20218:1;20207:9;20203:17;20194:6;20150:71;;;20107:124;;;;;20238:324;;20384:2;20373:9;20369:18;20361:26;;20398:71;20466:1;20455:9;20451:17;20442:6;20398:71;;;20480:72;20548:2;20537:9;20533:18;20524:6;20480:72;;;20355:207;;;;;;20569:435;;20743:2;20732:9;20728:18;20720:26;;20757:71;20825:1;20814:9;20810:17;20801:6;20757:71;;;20839:72;20907:2;20896:9;20892:18;20883:6;20839:72;;;20922;20990:2;20979:9;20975:18;20966:6;20922:72;;;20714:290;;;;;;;21011:407;;21202:2;21191:9;21187:18;21179:26;;21252:9;21246:4;21242:20;21238:1;21227:9;21223:17;21216:47;21277:131;21403:4;21277:131;;;21269:139;;21173:245;;;;21425:407;;21616:2;21605:9;21601:18;21593:26;;21666:9;21660:4;21656:20;21652:1;21641:9;21637:17;21630:47;21691:131;21817:4;21691:131;;;21683:139;;21587:245;;;;21839:407;;22030:2;22019:9;22015:18;22007:26;;22080:9;22074:4;22070:20;22066:1;22055:9;22051:17;22044:47;22105:131;22231:4;22105:131;;;22097:139;;22001:245;;;;22253:407;;22444:2;22433:9;22429:18;22421:26;;22494:9;22488:4;22484:20;22480:1;22469:9;22465:17;22458:47;22519:131;22645:4;22519:131;;;22511:139;;22415:245;;;;22667:407;;22858:2;22847:9;22843:18;22835:26;;22908:9;22902:4;22898:20;22894:1;22883:9;22879:17;22872:47;22933:131;23059:4;22933:131;;;22925:139;;22829:245;;;;23081:407;;23272:2;23261:9;23257:18;23249:26;;23322:9;23316:4;23312:20;23308:1;23297:9;23293:17;23286:47;23347:131;23473:4;23347:131;;;23339:139;;23243:245;;;;23495:407;;23686:2;23675:9;23671:18;23663:26;;23736:9;23730:4;23726:20;23722:1;23711:9;23707:17;23700:47;23761:131;23887:4;23761:131;;;23753:139;;23657:245;;;;23909:213;;24027:2;24016:9;24012:18;24004:26;;24041:71;24109:1;24098:9;24094:17;24085:6;24041:71;;;23998:124;;;;;24129:324;;24275:2;24264:9;24260:18;24252:26;;24289:71;24357:1;24346:9;24342:17;24333:6;24289:71;;;24371:72;24439:2;24428:9;24424:18;24415:6;24371:72;;;24246:207;;;;;;24460:435;;24634:2;24623:9;24619:18;24611:26;;24648:71;24716:1;24705:9;24701:17;24692:6;24648:71;;;24730:72;24798:2;24787:9;24783:18;24774:6;24730:72;;;24813;24881:2;24870:9;24866:18;24857:6;24813:72;;;24605:290;;;;;;;24902:427;;25072:2;25061:9;25057:18;25049:26;;25086:71;25154:1;25143:9;25139:17;25130:6;25086:71;;;25168:70;25234:2;25223:9;25219:18;25210:6;25168:70;;;25249;25315:2;25304:9;25300:18;25291:6;25249:70;;;25043:286;;;;;;;25336:256;;25398:2;25392:9;25382:19;;25436:4;25428:6;25424:17;25535:6;25523:10;25520:22;25499:18;25487:10;25484:34;25481:62;25478:2;;;25556:1;25553;25546:12;25478:2;25576:10;25572:2;25565:22;25376:216;;;;;25599:304;;25758:18;25750:6;25747:30;25744:2;;;25790:1;25787;25780:12;25744:2;25825:4;25817:6;25813:17;25805:25;;25888:4;25882;25878:15;25870:23;;25681:222;;;;25910:151;;25996:3;25988:11;;26034:4;26029:3;26025:14;26017:22;;25982:79;;;;26068:137;;26177:5;26171:12;26161:22;;26142:63;;;;26212:121;;26305:5;26299:12;26289:22;;26270:63;;;;26340:108;;26438:4;26433:3;26429:14;26421:22;;26415:33;;;;26456:178;;26586:6;26581:3;26574:19;26623:4;26618:3;26614:14;26599:29;;26567:67;;;;;26643:162;;26757:6;26752:3;26745:19;26794:4;26789:3;26785:14;26770:29;;26738:67;;;;;26814:144;;26949:3;26934:18;;26927:31;;;;;26967:163;;27082:6;27077:3;27070:19;27119:4;27114:3;27110:14;27095:29;;27063:67;;;;;27138:91;;27200:24;27218:5;27200:24;;;27189:35;;27183:46;;;;27236:99;;27306:24;27324:5;27306:24;;;27295:35;;27289:46;;;;27342:85;;27415:5;27408:13;27401:21;27390:32;;27384:43;;;;27434:72;;27496:5;27485:16;;27479:27;;;;27513:111;;27595:24;27613:5;27595:24;;;27584:35;;27578:46;;;;27631:107;;27709:24;27727:5;27709:24;;;27698:35;;27692:46;;;;27745:71;;27806:5;27795:16;;27789:27;;;;27823:121;;27896:42;27889:5;27885:54;27874:65;;27868:76;;;;27951:72;;28013:5;28002:16;;27996:27;;;;28030:81;;28101:4;28094:5;28090:16;28079:27;;28073:38;;;;28118:129;;28205:37;28236:5;28205:37;;;28192:50;;28186:61;;;;28254:121;;28333:37;28364:5;28333:37;;;28320:50;;28314:61;;;;28382:108;;28461:24;28479:5;28461:24;;;28448:37;;28442:48;;;;28498:145;28579:6;28574:3;28569;28556:30;28635:1;28626:6;28621:3;28617:16;28610:27;28549:94;;;;28652:268;28717:1;28724:101;28738:6;28735:1;28732:13;28724:101;;;28814:1;28809:3;28805:11;28799:18;28795:1;28790:3;28786:11;28779:39;28760:2;28757:1;28753:10;28748:15;;28724:101;;;28840:6;28837:1;28834:13;28831:2;;;28905:1;28896:6;28891:3;28887:16;28880:27;28831:2;28701:219;;;;;28928:97;;29016:2;29012:7;29007:2;29000:5;28996:14;28992:28;28982:38;;28976:49;;;;29033:117;29102:24;29120:5;29102:24;;;29095:5;29092:35;29082:2;;29141:1;29138;29131:12;29082:2;29076:74;;29157:133;29234:32;29260:5;29234:32;;;29227:5;29224:43;29214:2;;29281:1;29278;29271:12;29214:2;29208:82;;29297:111;29363:21;29378:5;29363:21;;;29356:5;29353:32;29343:2;;29399:1;29396;29389:12;29343:2;29337:71;;29415:117;29484:24;29502:5;29484:24;;;29477:5;29474:35;29464:2;;29523:1;29520;29513:12;29464:2;29458:74;;29539:157;29628:44;29666:5;29628:44;;;29621:5;29618:55;29608:2;;29687:1;29684;29677:12;29608:2;29602:94;;29703:149;29788:40;29822:5;29788:40;;;29781:5;29778:51;29768:2;;29843:1;29840;29833:12;29768:2;29762:90;;29859:115;29927:23;29944:5;29927:23;;;29920:5;29917:34;29907:2;;29965:1;29962;29955:12;29907:2;29901:73;;29981:117;30050:24;30068:5;30050:24;;;30043:5;30040:35;30030:2;;30089:1;30086;30079:12;30030:2;30024:74;;30105:113;30172:22;30188:5;30172:22;;;30165:5;30162:33;30152:2;;30209:1;30206;30199:12;30152:2;30146:72;", "source": "// Largely referenced from https://github.com/mrdavey/CollateralSwapFrontend\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\nimport \"../lib/aave/FlashLoanReceiverBase.sol\";\n\nimport \"../lib/makerdao/DssProxyActionsBase.sol\";\n\nimport \"../lib/uniswap/UniswapBase.sol\";\n\nimport \"../lib/dapphub/Guard.sol\";\n\nimport \"../proxies/DACProxy.sol\";\n\n\nimport \"../interfaces/aave/ILendingPoolAddressesProvider.sol\";\nimport \"../interfaces/aave/ILendingPool.sol\";\n\nimport \"../interfaces/uniswap/IUniswapExchange.sol\";\nimport \"../interfaces/uniswap/IUniswapFactory.sol\";\n\nimport \"../interfaces/IERC20.sol\";\n\nimport \"../interfaces/compound/IComptroller.sol\";\nimport \"../interfaces/compound/ICToken.sol\";\nimport \"../interfaces/compound/ICEther.sol\";\n\nimport \"../interfaces/makerdao/IDssProxyActions.sol\";\n\nimport \"../registries/AddressRegistry.sol\";\n\n\ncontract DedgeMakerManager is DssProxyActionsBase {\n function () external payable {}\n\n constructor () public {}\n\n struct ImportMakerVaultCallData {\n address addressRegistryAddress;\n uint cdpId;\n address collateralCTokenAddress;\n address collateralJoinAddress;\n uint8 collateralDecimals;\n }\n\n // Helper functions\n function _proxyGuardPermit(address payable proxyAddress, address src) internal {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).permit(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _proxyGuardForbid(address payable proxyAddress, address src) internal {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).forbid(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _convert18ToDecimal(uint amount, uint8 decimals) internal returns (uint) {\n return amount / (10 ** (18 - uint(decimals)));\n }\n\n function _convert18ToGemUnits(address gemJoin, uint256 wad) internal returns (uint) {\n return wad / (10 ** (18 - GemJoinLike(gemJoin).dec()));\n }\n\n // Gets vault debt in 18 wei\n function getVaultDebt(address manager, uint cdp) public view returns (uint debt)\n {\n address vat = ManagerLike(manager).vat();\n address urn = ManagerLike(manager).urns(cdp);\n bytes32 ilk = ManagerLike(manager).ilks(cdp);\n address owner = ManagerLike(manager).owns(cdp);\n\n debt = _getWipeAllWad(vat, owner, urn, ilk);\n }\n\n function getVaultCollateral(\n address manager,\n uint cdp\n ) public view returns (uint ink) {\n address vat = ManagerLike(manager).vat();\n address urn = ManagerLike(manager).urns(cdp);\n bytes32 ilk = ManagerLike(manager).ilks(cdp);\n\n // Note: This returns in 18 decimals, need to\n // convert to gemUnits before passing it to\n // dss-proxy-actions\n (ink,) = VatLike(vat).urns(ilk, urn);\n }\n\n // Function to be called by proxy post loan\n // in order to import maker vault\n function importMakerVaultPostLoan(\n uint _amount,\n uint _aaveFee,\n uint _protocolFee,\n bytes calldata _data\n ) external {\n // Calculate total debt\n uint totalDebt = _amount + _aaveFee + _protocolFee;\n\n // Reconstruct data\n ImportMakerVaultCallData memory imvCalldata = abi.decode(_data, (ImportMakerVaultCallData));\n\n // Extract relevant data\n AddressRegistry addressRegistry = AddressRegistry(imvCalldata.addressRegistryAddress);\n address cdpManager = addressRegistry.DssCdpManagerAddress();\n address collateralCTokenAddress = imvCalldata.collateralCTokenAddress;\n\n // Collateral in 18 decimal places\n uint collateral18 = getVaultCollateral(cdpManager, imvCalldata.cdpId);\n\n // Joins the ETH/GEM/DAI market in compound if they haven't already\n address[] memory enterMarketsCToken = new address[](2);\n enterMarketsCToken[0] = collateralCTokenAddress;\n enterMarketsCToken[1] = addressRegistry.CDaiAddress();\n\n uint[] memory enterMarketErrors = IComptroller(\n addressRegistry.CompoundComptrollerAddress()\n ).enterMarkets(enterMarketsCToken);\n\n require(enterMarketErrors[0] == 0, \"mkr-enter-gem-failed\");\n require(enterMarketErrors[1] == 0, \"mkr-enter-dai-failed\");\n\n if (ManagerLike(cdpManager).ilks(imvCalldata.cdpId) == bytes32(\"ETH-A\")) {\n wipeAllAndFreeETH(\n cdpManager,\n addressRegistry.EthJoinAddress(),\n addressRegistry.DaiJoinAddress(),\n imvCalldata.cdpId,\n collateral18\n );\n\n // Supply ETH and Borrow DAI (Compound)\n ICEther(addressRegistry.CEtherAddress()).mint.value(collateral18)();\n require(\n ICToken(addressRegistry.CDaiAddress()).borrow(totalDebt) == 0,\n \"dai-borrow-fail\"\n );\n } else {\n // Free GEM\n wipeAllAndFreeGem(\n cdpManager,\n imvCalldata.collateralJoinAddress,\n addressRegistry.DaiJoinAddress(),\n imvCalldata.cdpId,\n _convert18ToGemUnits(\n imvCalldata.collateralJoinAddress,\n collateral18\n )\n );\n\n // Convert collateral to relevant decimal places\n uint collateralFixedDec = _convert18ToDecimal(\n collateral18, imvCalldata.collateralDecimals\n );\n\n // Approve CToken Collateral underlying to enable call transferFrom\n IERC20(ICToken(collateralCTokenAddress).underlying())\n .approve(collateralCTokenAddress, collateralFixedDec);\n\n // Supply GEM and Borrow DAI (Compound)\n require(\n ICToken(collateralCTokenAddress).mint(\n collateralFixedDec\n ) == 0,\n \"gem-supply-fail\"\n );\n require(\n ICToken(addressRegistry.CDaiAddress()).borrow(totalDebt) == 0,\n \"dai-borrow-fail\"\n );\n }\n }\n\n /* \n Main entry point maker vault into Dedge\n\n @params:\n dacProxyAddress: User's proxy address\n addressRegistryAddress: AddressRegistry's Address\n cdpId: User's cdpId\n executeOperationCalldataParams:\n Abi-encoded `data` used by User's proxy's `execute(address, )` function\n Used to delegatecall to another contract (i.e. this contract) in the context\n of the proxy. This allows for better flexibility and decoupling of logic from\n user's proxy. In this specific case, it is expecting the results from: (from JS)\n\n ```\n const IDedgeMakerManager = ethers.utils.Interface(DedgeMakerManager.abi)\n\n const executeOperationCalldataParams = IDedgeMakerManager\n .functions\n .importMakerVaultPostLoan\n .encode([ ])\n ```\n */\n function importMakerVault(\n address dedgeMakerManagerAddress,\n address payable dacProxyAddress,\n address addressRegistryAddress,\n uint cdpId,\n bytes calldata executeOperationCalldataParams\n ) external {\n // Get Address Registry\n AddressRegistry addressRegistry = AddressRegistry(addressRegistryAddress);\n\n // Get cdpManager and proxy's guard address\n address cdpManager = addressRegistry.DssCdpManagerAddress();\n\n // Get Debt\n uint daiDebt = getVaultDebt(cdpManager, cdpId);\n\n // Injects the target address into calldataParams\n // so user proxy knows which address it'll be calling `calldataParams` on\n bytes memory addressAndExecuteOperationCalldataParams = abi.encodePacked(\n abi.encode(dedgeMakerManagerAddress),\n executeOperationCalldataParams\n );\n \n // Get lending pool address\n ILendingPool lendingPool = ILendingPool(\n ILendingPoolAddressesProvider(\n addressRegistry.AaveLendingPoolAddressProviderAddress()\n ).getLendingPool()\n );\n\n cdpAllow(addressRegistry.DssCdpManagerAddress(), cdpId, dedgeMakerManagerAddress, 1);\n _proxyGuardPermit(dacProxyAddress, address(lendingPool));\n\n lendingPool.flashLoan(\n dacProxyAddress,\n addressRegistry.DaiAddress(),\n daiDebt,\n addressAndExecuteOperationCalldataParams\n );\n\n // Once we're done with the vault, give it away (its empty anyway)\n give(addressRegistry.DssCdpManagerAddress(), cdpId, address(1));\n // Lending pool can't call our proxy address anymore\n _proxyGuardForbid(dacProxyAddress, address(lendingPool));\n }\n}\n", @@ -382,14 +382,14 @@ "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol", "exportedSymbols": { "DedgeMakerManager": [ - 7188 + 7077 ] }, - "id": 7189, + "id": 7078, "nodeType": "SourceUnit", "nodes": [ { - "id": 6597, + "id": 6486, "literals": [ "solidity", "0.5", @@ -399,7 +399,7 @@ "src": "78:23:28" }, { - "id": 6598, + "id": 6487, "literals": [ "experimental", "ABIEncoderV2" @@ -410,9 +410,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol", "file": "../lib/aave/FlashLoanReceiverBase.sol", - "id": 6599, + "id": 6488, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 2139, "src": "137:47:28", "symbolAliases": [], @@ -421,9 +421,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol", "file": "../lib/makerdao/DssProxyActionsBase.sol", - "id": 6600, + "id": 6489, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 4712, "src": "186:49:28", "symbolAliases": [], @@ -432,9 +432,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol", "file": "../lib/uniswap/UniswapBase.sol", - "id": 6601, + "id": 6490, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 4919, "src": "237:40:28", "symbolAliases": [], @@ -443,9 +443,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol", "file": "../lib/dapphub/Guard.sol", - "id": 6602, + "id": 6491, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 3196, "src": "279:34:28", "symbolAliases": [], @@ -454,10 +454,10 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", "file": "../proxies/DACProxy.sol", - "id": 6603, + "id": 6492, "nodeType": "ImportDirective", - "scope": 7189, - "sourceUnit": 7323, + "scope": 7078, + "sourceUnit": 7245, "src": "315:33:28", "symbolAliases": [], "unitAlias": "" @@ -465,9 +465,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol", "file": "../interfaces/aave/ILendingPoolAddressesProvider.sol", - "id": 6604, + "id": 6493, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 660, "src": "351:62:28", "symbolAliases": [], @@ -476,9 +476,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol", "file": "../interfaces/aave/ILendingPool.sol", - "id": 6605, + "id": 6494, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 547, "src": "414:45:28", "symbolAliases": [], @@ -487,9 +487,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol", "file": "../interfaces/uniswap/IUniswapExchange.sol", - "id": 6606, + "id": 6495, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 1910, "src": "461:52:28", "symbolAliases": [], @@ -498,9 +498,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol", "file": "../interfaces/uniswap/IUniswapFactory.sol", - "id": 6607, + "id": 6496, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 1950, "src": "514:51:28", "symbolAliases": [], @@ -509,9 +509,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol", "file": "../interfaces/IERC20.sol", - "id": 6608, + "id": 6497, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 121, "src": "567:34:28", "symbolAliases": [], @@ -520,9 +520,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol", "file": "../interfaces/compound/IComptroller.sol", - "id": 6609, + "id": 6498, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 1097, "src": "603:49:28", "symbolAliases": [], @@ -531,9 +531,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol", "file": "../interfaces/compound/ICToken.sol", - "id": 6610, + "id": 6499, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 859, "src": "653:44:28", "symbolAliases": [], @@ -542,9 +542,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol", "file": "../interfaces/compound/ICEther.sol", - "id": 6611, + "id": 6500, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 733, "src": "698:44:28", "symbolAliases": [], @@ -553,9 +553,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol", "file": "../interfaces/makerdao/IDssProxyActions.sol", - "id": 6612, + "id": 6501, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 1566, "src": "744:53:28", "symbolAliases": [], @@ -564,10 +564,10 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol", "file": "../registries/AddressRegistry.sol", - "id": 6613, + "id": 6502, "nodeType": "ImportDirective", - "scope": 7189, - "sourceUnit": 7629, + "scope": 7078, + "sourceUnit": 7551, "src": "799:43:28", "symbolAliases": [], "unitAlias": "" @@ -578,7 +578,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 6614, + "id": 6503, "name": "DssProxyActionsBase", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4711, @@ -588,7 +588,7 @@ "typeString": "contract DssProxyActionsBase" } }, - "id": 6615, + "id": 6504, "nodeType": "InheritanceSpecifier", "src": "875:19:28" } @@ -600,9 +600,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 7188, + "id": 7077, "linearizedBaseContracts": [ - 7188, + 7077, 4711, 4144 ], @@ -611,31 +611,31 @@ "nodes": [ { "body": { - "id": 6618, + "id": 6507, "nodeType": "Block", "src": "930:2:28", "statements": [] }, "documentation": null, - "id": 6619, + "id": 6508, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 6616, + "id": 6505, "nodeType": "ParameterList", "parameters": [], "src": "910:2:28" }, "returnParameters": { - "id": 6617, + "id": 6506, "nodeType": "ParameterList", "parameters": [], "src": "930:0:28" }, - "scope": 7188, + "scope": 7077, "src": "901:31:28", "stateMutability": "payable", "superFunction": null, @@ -643,31 +643,31 @@ }, { "body": { - "id": 6622, + "id": 6511, "nodeType": "Block", "src": "960:2:28", "statements": [] }, "documentation": null, - "id": 6623, + "id": 6512, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 6620, + "id": 6509, "nodeType": "ParameterList", "parameters": [], "src": "950:2:28" }, "returnParameters": { - "id": 6621, + "id": 6510, "nodeType": "ParameterList", "parameters": [], "src": "960:0:28" }, - "scope": 7188, + "scope": 7077, "src": "938:24:28", "stateMutability": "nonpayable", "superFunction": null, @@ -675,14 +675,14 @@ }, { "canonicalName": "DedgeMakerManager.ImportMakerVaultCallData", - "id": 6634, + "id": 6523, "members": [ { "constant": false, - "id": 6625, + "id": 6514, "name": "addressRegistryAddress", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1010:30:28", "stateVariable": false, "storageLocation": "default", @@ -691,7 +691,7 @@ "typeString": "address" }, "typeName": { - "id": 6624, + "id": 6513, "name": "address", "nodeType": "ElementaryTypeName", "src": "1010:7:28", @@ -706,10 +706,10 @@ }, { "constant": false, - "id": 6627, + "id": 6516, "name": "cdpId", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1050:10:28", "stateVariable": false, "storageLocation": "default", @@ -718,7 +718,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6626, + "id": 6515, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1050:4:28", @@ -732,10 +732,10 @@ }, { "constant": false, - "id": 6629, + "id": 6518, "name": "collateralCTokenAddress", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1070:31:28", "stateVariable": false, "storageLocation": "default", @@ -744,7 +744,7 @@ "typeString": "address" }, "typeName": { - "id": 6628, + "id": 6517, "name": "address", "nodeType": "ElementaryTypeName", "src": "1070:7:28", @@ -759,10 +759,10 @@ }, { "constant": false, - "id": 6631, + "id": 6520, "name": "collateralJoinAddress", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1111:29:28", "stateVariable": false, "storageLocation": "default", @@ -771,7 +771,7 @@ "typeString": "address" }, "typeName": { - "id": 6630, + "id": 6519, "name": "address", "nodeType": "ElementaryTypeName", "src": "1111:7:28", @@ -786,10 +786,10 @@ }, { "constant": false, - "id": 6633, + "id": 6522, "name": "collateralDecimals", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1150:24:28", "stateVariable": false, "storageLocation": "default", @@ -798,7 +798,7 @@ "typeString": "uint8" }, "typeName": { - "id": 6632, + "id": 6521, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1150:5:28", @@ -813,27 +813,27 @@ ], "name": "ImportMakerVaultCallData", "nodeType": "StructDefinition", - "scope": 7188, + "scope": 7077, "src": "968:213:28", "visibility": "public" }, { "body": { - "id": 6674, + "id": 6563, "nodeType": "Block", "src": "1290:214:28", "statements": [ { "assignments": [ - 6642 + 6531 ], "declarations": [ { "constant": false, - "id": 6642, + "id": 6531, "name": "g", "nodeType": "VariableDeclaration", - "scope": 6674, + "scope": 6563, "src": "1300:9:28", "stateVariable": false, "storageLocation": "default", @@ -842,7 +842,7 @@ "typeString": "address" }, "typeName": { - "id": 6641, + "id": 6530, "name": "address", "nodeType": "ElementaryTypeName", "src": "1300:7:28", @@ -856,7 +856,7 @@ "visibility": "internal" } ], - "id": 6650, + "id": 6539, "initialValue": { "argumentTypes": null, "arguments": [ @@ -870,11 +870,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6645, + "id": 6534, "name": "proxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6636, + "referencedDeclaration": 6525, "src": "1329:12:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -889,18 +889,18 @@ "typeString": "address payable" } ], - "id": 6644, + "id": 6533, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1320:8:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 6646, + "id": 6535, "isConstant": false, "isLValue": false, "isPure": false, @@ -910,11 +910,11 @@ "nodeType": "FunctionCall", "src": "1320:22:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 6647, + "id": 6536, "isConstant": false, "isLValue": false, "isPure": false, @@ -928,7 +928,7 @@ "typeString": "function () view external returns (contract DSAuthority)" } }, - "id": 6648, + "id": 6537, "isConstant": false, "isLValue": false, "isPure": false, @@ -950,7 +950,7 @@ "typeString": "contract DSAuthority" } ], - "id": 6643, + "id": 6532, "isConstant": false, "isLValue": false, "isPure": true, @@ -963,7 +963,7 @@ }, "typeName": "address" }, - "id": 6649, + "id": 6538, "isConstant": false, "isLValue": false, "isPure": false, @@ -995,11 +995,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6658, + "id": 6547, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6638, + "referencedDeclaration": 6527, "src": "1421:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1014,7 +1014,7 @@ "typeString": "address" } ], - "id": 6657, + "id": 6546, "isConstant": false, "isLValue": false, "isPure": true, @@ -1027,7 +1027,7 @@ }, "typeName": "address" }, - "id": 6659, + "id": 6548, "isConstant": false, "isLValue": false, "isPure": false, @@ -1049,7 +1049,7 @@ "typeString": "address" } ], - "id": 6656, + "id": 6545, "isConstant": false, "isLValue": false, "isPure": true, @@ -1062,7 +1062,7 @@ }, "typeName": "bytes20" }, - "id": 6660, + "id": 6549, "isConstant": false, "isLValue": false, "isPure": false, @@ -1084,7 +1084,7 @@ "typeString": "bytes20" } ], - "id": 6655, + "id": 6544, "isConstant": false, "isLValue": false, "isPure": true, @@ -1097,7 +1097,7 @@ }, "typeName": "bytes32" }, - "id": 6661, + "id": 6550, "isConstant": false, "isLValue": false, "isPure": false, @@ -1121,11 +1121,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6663, + "id": 6552, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6642, + "referencedDeclaration": 6531, "src": "1449:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1140,7 +1140,7 @@ "typeString": "address" } ], - "id": 6662, + "id": 6551, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1151,7 +1151,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6664, + "id": 6553, "isConstant": false, "isLValue": false, "isPure": false, @@ -1165,7 +1165,7 @@ "typeString": "contract DSGuard" } }, - "id": 6665, + "id": 6554, "isConstant": false, "isLValue": false, "isPure": false, @@ -1179,7 +1179,7 @@ "typeString": "function () view external returns (bytes32)" } }, - "id": 6666, + "id": 6555, "isConstant": false, "isLValue": false, "isPure": false, @@ -1203,11 +1203,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6668, + "id": 6557, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6642, + "referencedDeclaration": 6531, "src": "1479:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1222,7 +1222,7 @@ "typeString": "address" } ], - "id": 6667, + "id": 6556, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1233,7 +1233,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6669, + "id": 6558, "isConstant": false, "isLValue": false, "isPure": false, @@ -1247,7 +1247,7 @@ "typeString": "contract DSGuard" } }, - "id": 6670, + "id": 6559, "isConstant": false, "isLValue": false, "isPure": false, @@ -1261,7 +1261,7 @@ "typeString": "function () view external returns (bytes32)" } }, - "id": 6671, + "id": 6560, "isConstant": false, "isLValue": false, "isPure": false, @@ -1296,11 +1296,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6652, + "id": 6541, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6642, + "referencedDeclaration": 6531, "src": "1374:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1315,7 +1315,7 @@ "typeString": "address" } ], - "id": 6651, + "id": 6540, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1326,7 +1326,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6653, + "id": 6542, "isConstant": false, "isLValue": false, "isPure": false, @@ -1340,7 +1340,7 @@ "typeString": "contract DSGuard" } }, - "id": 6654, + "id": 6543, "isConstant": false, "isLValue": false, "isPure": false, @@ -1354,7 +1354,7 @@ "typeString": "function (bytes32,bytes32,bytes32) external" } }, - "id": 6672, + "id": 6561, "isConstant": false, "isLValue": false, "isPure": false, @@ -1368,29 +1368,29 @@ "typeString": "tuple()" } }, - "id": 6673, + "id": 6562, "nodeType": "ExpressionStatement", "src": "1366:131:28" } ] }, "documentation": null, - "id": 6675, + "id": 6564, "implemented": true, "kind": "function", "modifiers": [], "name": "_proxyGuardPermit", "nodeType": "FunctionDefinition", "parameters": { - "id": 6639, + "id": 6528, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6636, + "id": 6525, "name": "proxyAddress", "nodeType": "VariableDeclaration", - "scope": 6675, + "scope": 6564, "src": "1238:28:28", "stateVariable": false, "storageLocation": "default", @@ -1399,7 +1399,7 @@ "typeString": "address payable" }, "typeName": { - "id": 6635, + "id": 6524, "name": "address", "nodeType": "ElementaryTypeName", "src": "1238:15:28", @@ -1414,10 +1414,10 @@ }, { "constant": false, - "id": 6638, + "id": 6527, "name": "src", "nodeType": "VariableDeclaration", - "scope": 6675, + "scope": 6564, "src": "1268:11:28", "stateVariable": false, "storageLocation": "default", @@ -1426,7 +1426,7 @@ "typeString": "address" }, "typeName": { - "id": 6637, + "id": 6526, "name": "address", "nodeType": "ElementaryTypeName", "src": "1268:7:28", @@ -1443,12 +1443,12 @@ "src": "1237:43:28" }, "returnParameters": { - "id": 6640, + "id": 6529, "nodeType": "ParameterList", "parameters": [], "src": "1290:0:28" }, - "scope": 7188, + "scope": 7077, "src": "1211:293:28", "stateMutability": "nonpayable", "superFunction": null, @@ -1456,21 +1456,21 @@ }, { "body": { - "id": 6715, + "id": 6604, "nodeType": "Block", "src": "1589:214:28", "statements": [ { "assignments": [ - 6683 + 6572 ], "declarations": [ { "constant": false, - "id": 6683, + "id": 6572, "name": "g", "nodeType": "VariableDeclaration", - "scope": 6715, + "scope": 6604, "src": "1599:9:28", "stateVariable": false, "storageLocation": "default", @@ -1479,7 +1479,7 @@ "typeString": "address" }, "typeName": { - "id": 6682, + "id": 6571, "name": "address", "nodeType": "ElementaryTypeName", "src": "1599:7:28", @@ -1493,7 +1493,7 @@ "visibility": "internal" } ], - "id": 6691, + "id": 6580, "initialValue": { "argumentTypes": null, "arguments": [ @@ -1507,11 +1507,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6686, + "id": 6575, "name": "proxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6677, + "referencedDeclaration": 6566, "src": "1628:12:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1526,18 +1526,18 @@ "typeString": "address payable" } ], - "id": 6685, + "id": 6574, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1619:8:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 6687, + "id": 6576, "isConstant": false, "isLValue": false, "isPure": false, @@ -1547,11 +1547,11 @@ "nodeType": "FunctionCall", "src": "1619:22:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 6688, + "id": 6577, "isConstant": false, "isLValue": false, "isPure": false, @@ -1565,7 +1565,7 @@ "typeString": "function () view external returns (contract DSAuthority)" } }, - "id": 6689, + "id": 6578, "isConstant": false, "isLValue": false, "isPure": false, @@ -1587,7 +1587,7 @@ "typeString": "contract DSAuthority" } ], - "id": 6684, + "id": 6573, "isConstant": false, "isLValue": false, "isPure": true, @@ -1600,7 +1600,7 @@ }, "typeName": "address" }, - "id": 6690, + "id": 6579, "isConstant": false, "isLValue": false, "isPure": false, @@ -1632,11 +1632,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6699, + "id": 6588, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6679, + "referencedDeclaration": 6568, "src": "1720:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1651,7 +1651,7 @@ "typeString": "address" } ], - "id": 6698, + "id": 6587, "isConstant": false, "isLValue": false, "isPure": true, @@ -1664,7 +1664,7 @@ }, "typeName": "address" }, - "id": 6700, + "id": 6589, "isConstant": false, "isLValue": false, "isPure": false, @@ -1686,7 +1686,7 @@ "typeString": "address" } ], - "id": 6697, + "id": 6586, "isConstant": false, "isLValue": false, "isPure": true, @@ -1699,7 +1699,7 @@ }, "typeName": "bytes20" }, - "id": 6701, + "id": 6590, "isConstant": false, "isLValue": false, "isPure": false, @@ -1721,7 +1721,7 @@ "typeString": "bytes20" } ], - "id": 6696, + "id": 6585, "isConstant": false, "isLValue": false, "isPure": true, @@ -1734,7 +1734,7 @@ }, "typeName": "bytes32" }, - "id": 6702, + "id": 6591, "isConstant": false, "isLValue": false, "isPure": false, @@ -1758,11 +1758,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6704, + "id": 6593, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6683, + "referencedDeclaration": 6572, "src": "1748:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1777,7 +1777,7 @@ "typeString": "address" } ], - "id": 6703, + "id": 6592, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1788,7 +1788,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6705, + "id": 6594, "isConstant": false, "isLValue": false, "isPure": false, @@ -1802,7 +1802,7 @@ "typeString": "contract DSGuard" } }, - "id": 6706, + "id": 6595, "isConstant": false, "isLValue": false, "isPure": false, @@ -1816,7 +1816,7 @@ "typeString": "function () view external returns (bytes32)" } }, - "id": 6707, + "id": 6596, "isConstant": false, "isLValue": false, "isPure": false, @@ -1840,11 +1840,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6709, + "id": 6598, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6683, + "referencedDeclaration": 6572, "src": "1778:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1859,7 +1859,7 @@ "typeString": "address" } ], - "id": 6708, + "id": 6597, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1870,7 +1870,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6710, + "id": 6599, "isConstant": false, "isLValue": false, "isPure": false, @@ -1884,7 +1884,7 @@ "typeString": "contract DSGuard" } }, - "id": 6711, + "id": 6600, "isConstant": false, "isLValue": false, "isPure": false, @@ -1898,7 +1898,7 @@ "typeString": "function () view external returns (bytes32)" } }, - "id": 6712, + "id": 6601, "isConstant": false, "isLValue": false, "isPure": false, @@ -1933,11 +1933,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6693, + "id": 6582, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6683, + "referencedDeclaration": 6572, "src": "1673:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1952,7 +1952,7 @@ "typeString": "address" } ], - "id": 6692, + "id": 6581, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1963,7 +1963,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6694, + "id": 6583, "isConstant": false, "isLValue": false, "isPure": false, @@ -1977,7 +1977,7 @@ "typeString": "contract DSGuard" } }, - "id": 6695, + "id": 6584, "isConstant": false, "isLValue": false, "isPure": false, @@ -1991,7 +1991,7 @@ "typeString": "function (bytes32,bytes32,bytes32) external" } }, - "id": 6713, + "id": 6602, "isConstant": false, "isLValue": false, "isPure": false, @@ -2005,29 +2005,29 @@ "typeString": "tuple()" } }, - "id": 6714, + "id": 6603, "nodeType": "ExpressionStatement", "src": "1665:131:28" } ] }, "documentation": null, - "id": 6716, + "id": 6605, "implemented": true, "kind": "function", "modifiers": [], "name": "_proxyGuardForbid", "nodeType": "FunctionDefinition", "parameters": { - "id": 6680, + "id": 6569, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6677, + "id": 6566, "name": "proxyAddress", "nodeType": "VariableDeclaration", - "scope": 6716, + "scope": 6605, "src": "1537:28:28", "stateVariable": false, "storageLocation": "default", @@ -2036,7 +2036,7 @@ "typeString": "address payable" }, "typeName": { - "id": 6676, + "id": 6565, "name": "address", "nodeType": "ElementaryTypeName", "src": "1537:15:28", @@ -2051,10 +2051,10 @@ }, { "constant": false, - "id": 6679, + "id": 6568, "name": "src", "nodeType": "VariableDeclaration", - "scope": 6716, + "scope": 6605, "src": "1567:11:28", "stateVariable": false, "storageLocation": "default", @@ -2063,7 +2063,7 @@ "typeString": "address" }, "typeName": { - "id": 6678, + "id": 6567, "name": "address", "nodeType": "ElementaryTypeName", "src": "1567:7:28", @@ -2080,12 +2080,12 @@ "src": "1536:43:28" }, "returnParameters": { - "id": 6681, + "id": 6570, "nodeType": "ParameterList", "parameters": [], "src": "1589:0:28" }, - "scope": 7188, + "scope": 7077, "src": "1510:293:28", "stateMutability": "nonpayable", "superFunction": null, @@ -2093,7 +2093,7 @@ }, { "body": { - "id": 6737, + "id": 6626, "nodeType": "Block", "src": "1891:62:28", "statements": [ @@ -2104,18 +2104,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6735, + "id": 6624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6725, + "id": 6614, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6718, + "referencedDeclaration": 6607, "src": "1908:6:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2133,7 +2133,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6733, + "id": 6622, "isConstant": false, "isLValue": false, "isPure": false, @@ -2141,7 +2141,7 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 6726, + "id": 6615, "isConstant": false, "isLValue": false, "isPure": true, @@ -2167,7 +2167,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6731, + "id": 6620, "isConstant": false, "isLValue": false, "isPure": false, @@ -2175,7 +2175,7 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3138", - "id": 6727, + "id": 6616, "isConstant": false, "isLValue": false, "isPure": true, @@ -2197,11 +2197,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6729, + "id": 6618, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6720, + "referencedDeclaration": 6609, "src": "1935:8:28", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -2216,7 +2216,7 @@ "typeString": "uint8" } ], - "id": 6728, + "id": 6617, "isConstant": false, "isLValue": false, "isPure": true, @@ -2229,7 +2229,7 @@ }, "typeName": "uint" }, - "id": 6730, + "id": 6619, "isConstant": false, "isLValue": false, "isPure": false, @@ -2250,7 +2250,7 @@ } } ], - "id": 6732, + "id": 6621, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -2270,7 +2270,7 @@ } } ], - "id": 6734, + "id": 6623, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -2289,30 +2289,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 6724, - "id": 6736, + "functionReturnParameters": 6613, + "id": 6625, "nodeType": "Return", "src": "1901:45:28" } ] }, "documentation": null, - "id": 6738, + "id": 6627, "implemented": true, "kind": "function", "modifiers": [], "name": "_convert18ToDecimal", "nodeType": "FunctionDefinition", "parameters": { - "id": 6721, + "id": 6610, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6718, + "id": 6607, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6738, + "scope": 6627, "src": "1838:11:28", "stateVariable": false, "storageLocation": "default", @@ -2321,7 +2321,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6717, + "id": 6606, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1838:4:28", @@ -2335,10 +2335,10 @@ }, { "constant": false, - "id": 6720, + "id": 6609, "name": "decimals", "nodeType": "VariableDeclaration", - "scope": 6738, + "scope": 6627, "src": "1851:14:28", "stateVariable": false, "storageLocation": "default", @@ -2347,7 +2347,7 @@ "typeString": "uint8" }, "typeName": { - "id": 6719, + "id": 6608, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1851:5:28", @@ -2363,15 +2363,15 @@ "src": "1837:29:28" }, "returnParameters": { - "id": 6724, + "id": 6613, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6723, + "id": 6612, "name": "", "nodeType": "VariableDeclaration", - "scope": 6738, + "scope": 6627, "src": "1885:4:28", "stateVariable": false, "storageLocation": "default", @@ -2380,7 +2380,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6722, + "id": 6611, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1885:4:28", @@ -2395,7 +2395,7 @@ ], "src": "1884:6:28" }, - "scope": 7188, + "scope": 7077, "src": "1809:144:28", "stateMutability": "nonpayable", "superFunction": null, @@ -2403,7 +2403,7 @@ }, { "body": { - "id": 6761, + "id": 6650, "nodeType": "Block", "src": "2043:71:28", "statements": [ @@ -2414,18 +2414,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6759, + "id": 6648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6747, + "id": 6636, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6742, + "referencedDeclaration": 6631, "src": "2060:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2443,7 +2443,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6757, + "id": 6646, "isConstant": false, "isLValue": false, "isPure": false, @@ -2451,7 +2451,7 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 6748, + "id": 6637, "isConstant": false, "isLValue": false, "isPure": true, @@ -2477,7 +2477,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6755, + "id": 6644, "isConstant": false, "isLValue": false, "isPure": false, @@ -2485,7 +2485,7 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3138", - "id": 6749, + "id": 6638, "isConstant": false, "isLValue": false, "isPure": true, @@ -2512,11 +2512,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6751, + "id": 6640, "name": "gemJoin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6740, + "referencedDeclaration": 6629, "src": "2091:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2531,7 +2531,7 @@ "typeString": "address" } ], - "id": 6750, + "id": 6639, "name": "GemJoinLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2542,7 +2542,7 @@ "typeString": "type(contract GemJoinLike)" } }, - "id": 6752, + "id": 6641, "isConstant": false, "isLValue": false, "isPure": false, @@ -2556,7 +2556,7 @@ "typeString": "contract GemJoinLike" } }, - "id": 6753, + "id": 6642, "isConstant": false, "isLValue": false, "isPure": false, @@ -2570,7 +2570,7 @@ "typeString": "function () external returns (uint256)" } }, - "id": 6754, + "id": 6643, "isConstant": false, "isLValue": false, "isPure": false, @@ -2591,7 +2591,7 @@ } } ], - "id": 6756, + "id": 6645, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -2611,7 +2611,7 @@ } } ], - "id": 6758, + "id": 6647, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -2630,30 +2630,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 6746, - "id": 6760, + "functionReturnParameters": 6635, + "id": 6649, "nodeType": "Return", "src": "2053:54:28" } ] }, "documentation": null, - "id": 6762, + "id": 6651, "implemented": true, "kind": "function", "modifiers": [], "name": "_convert18ToGemUnits", "nodeType": "FunctionDefinition", "parameters": { - "id": 6743, + "id": 6632, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6740, + "id": 6629, "name": "gemJoin", "nodeType": "VariableDeclaration", - "scope": 6762, + "scope": 6651, "src": "1989:15:28", "stateVariable": false, "storageLocation": "default", @@ -2662,7 +2662,7 @@ "typeString": "address" }, "typeName": { - "id": 6739, + "id": 6628, "name": "address", "nodeType": "ElementaryTypeName", "src": "1989:7:28", @@ -2677,10 +2677,10 @@ }, { "constant": false, - "id": 6742, + "id": 6631, "name": "wad", "nodeType": "VariableDeclaration", - "scope": 6762, + "scope": 6651, "src": "2006:11:28", "stateVariable": false, "storageLocation": "default", @@ -2689,7 +2689,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6741, + "id": 6630, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2006:7:28", @@ -2705,15 +2705,15 @@ "src": "1988:30:28" }, "returnParameters": { - "id": 6746, + "id": 6635, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6745, + "id": 6634, "name": "", "nodeType": "VariableDeclaration", - "scope": 6762, + "scope": 6651, "src": "2037:4:28", "stateVariable": false, "storageLocation": "default", @@ -2722,7 +2722,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6744, + "id": 6633, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2037:4:28", @@ -2737,7 +2737,7 @@ ], "src": "2036:6:28" }, - "scope": 7188, + "scope": 7077, "src": "1959:155:28", "stateMutability": "nonpayable", "superFunction": null, @@ -2745,21 +2745,21 @@ }, { "body": { - "id": 6815, + "id": 6704, "nodeType": "Block", "src": "2238:275:28", "statements": [ { "assignments": [ - 6772 + 6661 ], "declarations": [ { "constant": false, - "id": 6772, + "id": 6661, "name": "vat", "nodeType": "VariableDeclaration", - "scope": 6815, + "scope": 6704, "src": "2248:11:28", "stateVariable": false, "storageLocation": "default", @@ -2768,7 +2768,7 @@ "typeString": "address" }, "typeName": { - "id": 6771, + "id": 6660, "name": "address", "nodeType": "ElementaryTypeName", "src": "2248:7:28", @@ -2782,7 +2782,7 @@ "visibility": "internal" } ], - "id": 6778, + "id": 6667, "initialValue": { "argumentTypes": null, "arguments": [], @@ -2793,11 +2793,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6774, + "id": 6663, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6764, + "referencedDeclaration": 6653, "src": "2274:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2812,7 +2812,7 @@ "typeString": "address" } ], - "id": 6773, + "id": 6662, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2823,7 +2823,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6775, + "id": 6664, "isConstant": false, "isLValue": false, "isPure": false, @@ -2837,7 +2837,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6776, + "id": 6665, "isConstant": false, "isLValue": false, "isPure": false, @@ -2851,7 +2851,7 @@ "typeString": "function () view external returns (address)" } }, - "id": 6777, + "id": 6666, "isConstant": false, "isLValue": false, "isPure": false, @@ -2870,15 +2870,15 @@ }, { "assignments": [ - 6780 + 6669 ], "declarations": [ { "constant": false, - "id": 6780, + "id": 6669, "name": "urn", "nodeType": "VariableDeclaration", - "scope": 6815, + "scope": 6704, "src": "2298:11:28", "stateVariable": false, "storageLocation": "default", @@ -2887,7 +2887,7 @@ "typeString": "address" }, "typeName": { - "id": 6779, + "id": 6668, "name": "address", "nodeType": "ElementaryTypeName", "src": "2298:7:28", @@ -2901,17 +2901,17 @@ "visibility": "internal" } ], - "id": 6787, + "id": 6676, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6785, + "id": 6674, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6766, + "referencedDeclaration": 6655, "src": "2338:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2931,11 +2931,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6782, + "id": 6671, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6764, + "referencedDeclaration": 6653, "src": "2324:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2950,7 +2950,7 @@ "typeString": "address" } ], - "id": 6781, + "id": 6670, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -2961,7 +2961,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6783, + "id": 6672, "isConstant": false, "isLValue": false, "isPure": false, @@ -2975,7 +2975,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6784, + "id": 6673, "isConstant": false, "isLValue": false, "isPure": false, @@ -2989,7 +2989,7 @@ "typeString": "function (uint256) view external returns (address)" } }, - "id": 6786, + "id": 6675, "isConstant": false, "isLValue": false, "isPure": false, @@ -3008,15 +3008,15 @@ }, { "assignments": [ - 6789 + 6678 ], "declarations": [ { "constant": false, - "id": 6789, + "id": 6678, "name": "ilk", "nodeType": "VariableDeclaration", - "scope": 6815, + "scope": 6704, "src": "2352:11:28", "stateVariable": false, "storageLocation": "default", @@ -3025,7 +3025,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 6788, + "id": 6677, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2352:7:28", @@ -3038,17 +3038,17 @@ "visibility": "internal" } ], - "id": 6796, + "id": 6685, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6794, + "id": 6683, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6766, + "referencedDeclaration": 6655, "src": "2392:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3068,11 +3068,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6791, + "id": 6680, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6764, + "referencedDeclaration": 6653, "src": "2378:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3087,7 +3087,7 @@ "typeString": "address" } ], - "id": 6790, + "id": 6679, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3098,7 +3098,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6792, + "id": 6681, "isConstant": false, "isLValue": false, "isPure": false, @@ -3112,7 +3112,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6793, + "id": 6682, "isConstant": false, "isLValue": false, "isPure": false, @@ -3126,7 +3126,7 @@ "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 6795, + "id": 6684, "isConstant": false, "isLValue": false, "isPure": false, @@ -3145,15 +3145,15 @@ }, { "assignments": [ - 6798 + 6687 ], "declarations": [ { "constant": false, - "id": 6798, + "id": 6687, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 6815, + "scope": 6704, "src": "2406:13:28", "stateVariable": false, "storageLocation": "default", @@ -3162,7 +3162,7 @@ "typeString": "address" }, "typeName": { - "id": 6797, + "id": 6686, "name": "address", "nodeType": "ElementaryTypeName", "src": "2406:7:28", @@ -3176,17 +3176,17 @@ "visibility": "internal" } ], - "id": 6805, + "id": 6694, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6803, + "id": 6692, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6766, + "referencedDeclaration": 6655, "src": "2448:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3206,11 +3206,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6800, + "id": 6689, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6764, + "referencedDeclaration": 6653, "src": "2434:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3225,7 +3225,7 @@ "typeString": "address" } ], - "id": 6799, + "id": 6688, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3236,7 +3236,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6801, + "id": 6690, "isConstant": false, "isLValue": false, "isPure": false, @@ -3250,7 +3250,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6802, + "id": 6691, "isConstant": false, "isLValue": false, "isPure": false, @@ -3264,7 +3264,7 @@ "typeString": "function (uint256) view external returns (address)" } }, - "id": 6804, + "id": 6693, "isConstant": false, "isLValue": false, "isPure": false, @@ -3284,18 +3284,18 @@ { "expression": { "argumentTypes": null, - "id": 6813, + "id": 6702, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 6806, + "id": 6695, "name": "debt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6769, + "referencedDeclaration": 6658, "src": "2463:4:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3309,11 +3309,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6808, + "id": 6697, "name": "vat", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6772, + "referencedDeclaration": 6661, "src": "2485:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3322,11 +3322,11 @@ }, { "argumentTypes": null, - "id": 6809, + "id": 6698, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6798, + "referencedDeclaration": 6687, "src": "2490:5:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3335,11 +3335,11 @@ }, { "argumentTypes": null, - "id": 6810, + "id": 6699, "name": "urn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6780, + "referencedDeclaration": 6669, "src": "2497:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3348,11 +3348,11 @@ }, { "argumentTypes": null, - "id": 6811, + "id": 6700, "name": "ilk", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6789, + "referencedDeclaration": 6678, "src": "2502:3:28", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3379,7 +3379,7 @@ "typeString": "bytes32" } ], - "id": 6807, + "id": 6696, "name": "_getWipeAllWad", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3390,7 +3390,7 @@ "typeString": "function (address,address,address,bytes32) view returns (uint256)" } }, - "id": 6812, + "id": 6701, "isConstant": false, "isLValue": false, "isPure": false, @@ -3410,29 +3410,29 @@ "typeString": "uint256" } }, - "id": 6814, + "id": 6703, "nodeType": "ExpressionStatement", "src": "2463:43:28" } ] }, "documentation": null, - "id": 6816, + "id": 6705, "implemented": true, "kind": "function", "modifiers": [], "name": "getVaultDebt", "nodeType": "FunctionDefinition", "parameters": { - "id": 6767, + "id": 6656, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6764, + "id": 6653, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 6816, + "scope": 6705, "src": "2175:15:28", "stateVariable": false, "storageLocation": "default", @@ -3441,7 +3441,7 @@ "typeString": "address" }, "typeName": { - "id": 6763, + "id": 6652, "name": "address", "nodeType": "ElementaryTypeName", "src": "2175:7:28", @@ -3456,10 +3456,10 @@ }, { "constant": false, - "id": 6766, + "id": 6655, "name": "cdp", "nodeType": "VariableDeclaration", - "scope": 6816, + "scope": 6705, "src": "2192:8:28", "stateVariable": false, "storageLocation": "default", @@ -3468,7 +3468,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6765, + "id": 6654, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2192:4:28", @@ -3484,15 +3484,15 @@ "src": "2174:27:28" }, "returnParameters": { - "id": 6770, + "id": 6659, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6769, + "id": 6658, "name": "debt", "nodeType": "VariableDeclaration", - "scope": 6816, + "scope": 6705, "src": "2223:9:28", "stateVariable": false, "storageLocation": "default", @@ -3501,7 +3501,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6768, + "id": 6657, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2223:4:28", @@ -3516,7 +3516,7 @@ ], "src": "2222:11:28" }, - "scope": 7188, + "scope": 7077, "src": "2153:360:28", "stateMutability": "view", "superFunction": null, @@ -3524,21 +3524,21 @@ }, { "body": { - "id": 6862, + "id": 6751, "nodeType": "Block", "src": "2627:347:28", "statements": [ { "assignments": [ - 6826 + 6715 ], "declarations": [ { "constant": false, - "id": 6826, + "id": 6715, "name": "vat", "nodeType": "VariableDeclaration", - "scope": 6862, + "scope": 6751, "src": "2637:11:28", "stateVariable": false, "storageLocation": "default", @@ -3547,7 +3547,7 @@ "typeString": "address" }, "typeName": { - "id": 6825, + "id": 6714, "name": "address", "nodeType": "ElementaryTypeName", "src": "2637:7:28", @@ -3561,7 +3561,7 @@ "visibility": "internal" } ], - "id": 6832, + "id": 6721, "initialValue": { "argumentTypes": null, "arguments": [], @@ -3572,11 +3572,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6828, + "id": 6717, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6818, + "referencedDeclaration": 6707, "src": "2663:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3591,7 +3591,7 @@ "typeString": "address" } ], - "id": 6827, + "id": 6716, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3602,7 +3602,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6829, + "id": 6718, "isConstant": false, "isLValue": false, "isPure": false, @@ -3616,7 +3616,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6830, + "id": 6719, "isConstant": false, "isLValue": false, "isPure": false, @@ -3630,7 +3630,7 @@ "typeString": "function () view external returns (address)" } }, - "id": 6831, + "id": 6720, "isConstant": false, "isLValue": false, "isPure": false, @@ -3649,15 +3649,15 @@ }, { "assignments": [ - 6834 + 6723 ], "declarations": [ { "constant": false, - "id": 6834, + "id": 6723, "name": "urn", "nodeType": "VariableDeclaration", - "scope": 6862, + "scope": 6751, "src": "2687:11:28", "stateVariable": false, "storageLocation": "default", @@ -3666,7 +3666,7 @@ "typeString": "address" }, "typeName": { - "id": 6833, + "id": 6722, "name": "address", "nodeType": "ElementaryTypeName", "src": "2687:7:28", @@ -3680,17 +3680,17 @@ "visibility": "internal" } ], - "id": 6841, + "id": 6730, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6839, + "id": 6728, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6820, + "referencedDeclaration": 6709, "src": "2727:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3710,11 +3710,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6836, + "id": 6725, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6818, + "referencedDeclaration": 6707, "src": "2713:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3729,7 +3729,7 @@ "typeString": "address" } ], - "id": 6835, + "id": 6724, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3740,7 +3740,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6837, + "id": 6726, "isConstant": false, "isLValue": false, "isPure": false, @@ -3754,7 +3754,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6838, + "id": 6727, "isConstant": false, "isLValue": false, "isPure": false, @@ -3768,7 +3768,7 @@ "typeString": "function (uint256) view external returns (address)" } }, - "id": 6840, + "id": 6729, "isConstant": false, "isLValue": false, "isPure": false, @@ -3787,15 +3787,15 @@ }, { "assignments": [ - 6843 + 6732 ], "declarations": [ { "constant": false, - "id": 6843, + "id": 6732, "name": "ilk", "nodeType": "VariableDeclaration", - "scope": 6862, + "scope": 6751, "src": "2741:11:28", "stateVariable": false, "storageLocation": "default", @@ -3804,7 +3804,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 6842, + "id": 6731, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2741:7:28", @@ -3817,17 +3817,17 @@ "visibility": "internal" } ], - "id": 6850, + "id": 6739, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6848, + "id": 6737, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6820, + "referencedDeclaration": 6709, "src": "2781:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3847,11 +3847,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6845, + "id": 6734, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6818, + "referencedDeclaration": 6707, "src": "2767:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3866,7 +3866,7 @@ "typeString": "address" } ], - "id": 6844, + "id": 6733, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -3877,7 +3877,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6846, + "id": 6735, "isConstant": false, "isLValue": false, "isPure": false, @@ -3891,7 +3891,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6847, + "id": 6736, "isConstant": false, "isLValue": false, "isPure": false, @@ -3905,7 +3905,7 @@ "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 6849, + "id": 6738, "isConstant": false, "isLValue": false, "isPure": false, @@ -3925,7 +3925,7 @@ { "expression": { "argumentTypes": null, - "id": 6860, + "id": 6749, "isConstant": false, "isLValue": false, "isPure": false, @@ -3935,11 +3935,11 @@ "components": [ { "argumentTypes": null, - "id": 6851, + "id": 6740, "name": "ink", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6823, + "referencedDeclaration": 6712, "src": "2932:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3948,7 +3948,7 @@ }, null ], - "id": 6852, + "id": 6741, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -3968,11 +3968,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6857, + "id": 6746, "name": "ilk", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6843, + "referencedDeclaration": 6732, "src": "2958:3:28", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3981,11 +3981,11 @@ }, { "argumentTypes": null, - "id": 6858, + "id": 6747, "name": "urn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6834, + "referencedDeclaration": 6723, "src": "2963:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4009,11 +4009,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6854, + "id": 6743, "name": "vat", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6826, + "referencedDeclaration": 6715, "src": "2948:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4028,7 +4028,7 @@ "typeString": "address" } ], - "id": 6853, + "id": 6742, "name": "VatLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -4039,7 +4039,7 @@ "typeString": "type(contract VatLike)" } }, - "id": 6855, + "id": 6744, "isConstant": false, "isLValue": false, "isPure": false, @@ -4053,7 +4053,7 @@ "typeString": "contract VatLike" } }, - "id": 6856, + "id": 6745, "isConstant": false, "isLValue": false, "isPure": false, @@ -4067,7 +4067,7 @@ "typeString": "function (bytes32,address) view external returns (uint256,uint256)" } }, - "id": 6859, + "id": 6748, "isConstant": false, "isLValue": false, "isPure": false, @@ -4087,29 +4087,29 @@ "typeString": "tuple()" } }, - "id": 6861, + "id": 6750, "nodeType": "ExpressionStatement", "src": "2931:36:28" } ] }, "documentation": null, - "id": 6863, + "id": 6752, "implemented": true, "kind": "function", "modifiers": [], "name": "getVaultCollateral", "nodeType": "FunctionDefinition", "parameters": { - "id": 6821, + "id": 6710, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6818, + "id": 6707, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 6863, + "scope": 6752, "src": "2556:15:28", "stateVariable": false, "storageLocation": "default", @@ -4118,7 +4118,7 @@ "typeString": "address" }, "typeName": { - "id": 6817, + "id": 6706, "name": "address", "nodeType": "ElementaryTypeName", "src": "2556:7:28", @@ -4133,10 +4133,10 @@ }, { "constant": false, - "id": 6820, + "id": 6709, "name": "cdp", "nodeType": "VariableDeclaration", - "scope": 6863, + "scope": 6752, "src": "2581:8:28", "stateVariable": false, "storageLocation": "default", @@ -4145,7 +4145,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6819, + "id": 6708, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2581:4:28", @@ -4161,15 +4161,15 @@ "src": "2546:49:28" }, "returnParameters": { - "id": 6824, + "id": 6713, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6823, + "id": 6712, "name": "ink", "nodeType": "VariableDeclaration", - "scope": 6863, + "scope": 6752, "src": "2617:8:28", "stateVariable": false, "storageLocation": "default", @@ -4178,7 +4178,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6822, + "id": 6711, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2617:4:28", @@ -4193,7 +4193,7 @@ ], "src": "2616:10:28" }, - "scope": 7188, + "scope": 7077, "src": "2519:455:28", "stateMutability": "view", "superFunction": null, @@ -4201,21 +4201,21 @@ }, { "body": { - "id": 7086, + "id": 6975, "nodeType": "Block", "src": "3217:3000:28", "statements": [ { "assignments": [ - 6875 + 6764 ], "declarations": [ { "constant": false, - "id": 6875, + "id": 6764, "name": "totalDebt", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3259:14:28", "stateVariable": false, "storageLocation": "default", @@ -4224,7 +4224,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6874, + "id": 6763, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3259:4:28", @@ -4237,14 +4237,14 @@ "visibility": "internal" } ], - "id": 6881, + "id": 6770, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6880, + "id": 6769, "isConstant": false, "isLValue": false, "isPure": false, @@ -4255,18 +4255,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6878, + "id": 6767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6876, + "id": 6765, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6865, + "referencedDeclaration": 6754, "src": "3276:7:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4277,11 +4277,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 6877, + "id": 6766, "name": "_aaveFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6867, + "referencedDeclaration": 6756, "src": "3286:8:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4298,11 +4298,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 6879, + "id": 6768, "name": "_protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6869, + "referencedDeclaration": 6758, "src": "3297:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4320,31 +4320,31 @@ }, { "assignments": [ - 6883 + 6772 ], "declarations": [ { "constant": false, - "id": 6883, + "id": 6772, "name": "imvCalldata", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3348:43:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData" }, "typeName": { "contractScope": null, - "id": 6882, + "id": 6771, "name": "ImportMakerVaultCallData", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6634, + "referencedDeclaration": 6523, "src": "3348:24:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_storage_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_storage_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData" } }, @@ -4352,17 +4352,17 @@ "visibility": "internal" } ], - "id": 6890, + "id": 6779, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6886, + "id": 6775, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6871, + "referencedDeclaration": 6760, "src": "3405:5:28", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -4374,19 +4374,19 @@ "components": [ { "argumentTypes": null, - "id": 6887, + "id": 6776, "name": "ImportMakerVaultCallData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6634, + "referencedDeclaration": 6523, "src": "3413:24:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6634_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6523_storage_ptr_$", "typeString": "type(struct DedgeMakerManager.ImportMakerVaultCallData storage pointer)" } } ], - "id": 6888, + "id": 6777, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -4395,7 +4395,7 @@ "nodeType": "TupleExpression", "src": "3412:26:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6634_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6523_storage_ptr_$", "typeString": "type(struct DedgeMakerManager.ImportMakerVaultCallData storage pointer)" } } @@ -4407,24 +4407,24 @@ "typeString": "bytes calldata" }, { - "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6634_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6523_storage_ptr_$", "typeString": "type(struct DedgeMakerManager.ImportMakerVaultCallData storage pointer)" } ], "expression": { "argumentTypes": null, - "id": 6884, + "id": 6773, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "3394:3:28", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 6885, + "id": 6774, "isConstant": false, "isLValue": false, "isPure": true, @@ -4438,7 +4438,7 @@ "typeString": "function () pure" } }, - "id": 6889, + "id": 6778, "isConstant": false, "isLValue": false, "isPure": false, @@ -4448,7 +4448,7 @@ "nodeType": "FunctionCall", "src": "3394:45:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, @@ -4457,31 +4457,31 @@ }, { "assignments": [ - 6892 + 6781 ], "declarations": [ { "constant": false, - "id": 6892, + "id": 6781, "name": "addressRegistry", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3483:31:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { "contractScope": null, - "id": 6891, + "id": 6780, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "3483:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -4489,7 +4489,7 @@ "visibility": "internal" } ], - "id": 6897, + "id": 6786, "initialValue": { "argumentTypes": null, "arguments": [ @@ -4497,25 +4497,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6894, + "id": 6783, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "3533:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6895, + "id": 6784, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "addressRegistryAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 6625, + "referencedDeclaration": 6514, "src": "3533:34:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4530,18 +4530,18 @@ "typeString": "address" } ], - "id": 6893, + "id": 6782, "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "3517:15:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, - "id": 6896, + "id": 6785, "isConstant": false, "isLValue": false, "isPure": false, @@ -4551,7 +4551,7 @@ "nodeType": "FunctionCall", "src": "3517:51:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -4560,15 +4560,15 @@ }, { "assignments": [ - 6899 + 6788 ], "declarations": [ { "constant": false, - "id": 6899, + "id": 6788, "name": "cdpManager", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3578:18:28", "stateVariable": false, "storageLocation": "default", @@ -4577,7 +4577,7 @@ "typeString": "address" }, "typeName": { - "id": 6898, + "id": 6787, "name": "address", "nodeType": "ElementaryTypeName", "src": "3578:7:28", @@ -4591,7 +4591,7 @@ "visibility": "internal" } ], - "id": 6903, + "id": 6792, "initialValue": { "argumentTypes": null, "arguments": [], @@ -4599,32 +4599,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6900, + "id": 6789, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "3599:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6901, + "id": 6790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DssCdpManagerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7627, + "referencedDeclaration": 7549, "src": "3599:36:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6902, + "id": 6791, "isConstant": false, "isLValue": false, "isPure": false, @@ -4643,15 +4643,15 @@ }, { "assignments": [ - 6905 + 6794 ], "declarations": [ { "constant": false, - "id": 6905, + "id": 6794, "name": "collateralCTokenAddress", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3647:31:28", "stateVariable": false, "storageLocation": "default", @@ -4660,7 +4660,7 @@ "typeString": "address" }, "typeName": { - "id": 6904, + "id": 6793, "name": "address", "nodeType": "ElementaryTypeName", "src": "3647:7:28", @@ -4674,30 +4674,30 @@ "visibility": "internal" } ], - "id": 6908, + "id": 6797, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6906, + "id": 6795, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "3681:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6907, + "id": 6796, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "collateralCTokenAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 6629, + "referencedDeclaration": 6518, "src": "3681:35:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4709,15 +4709,15 @@ }, { "assignments": [ - 6910 + 6799 ], "declarations": [ { "constant": false, - "id": 6910, + "id": 6799, "name": "collateral18", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3770:17:28", "stateVariable": false, "storageLocation": "default", @@ -4726,7 +4726,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6909, + "id": 6798, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3770:4:28", @@ -4739,17 +4739,17 @@ "visibility": "internal" } ], - "id": 6916, + "id": 6805, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6912, + "id": 6801, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6899, + "referencedDeclaration": 6788, "src": "3809:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4760,25 +4760,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6913, + "id": 6802, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "3821:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6914, + "id": 6803, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "cdpId", "nodeType": "MemberAccess", - "referencedDeclaration": 6627, + "referencedDeclaration": 6516, "src": "3821:17:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4797,18 +4797,18 @@ "typeString": "uint256" } ], - "id": 6911, + "id": 6800, "name": "getVaultCollateral", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6863, + "referencedDeclaration": 6752, "src": "3790:18:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) view returns (uint256)" } }, - "id": 6915, + "id": 6804, "isConstant": false, "isLValue": false, "isPure": false, @@ -4827,15 +4827,15 @@ }, { "assignments": [ - 6920 + 6809 ], "declarations": [ { "constant": false, - "id": 6920, + "id": 6809, "name": "enterMarketsCToken", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3926:35:28", "stateVariable": false, "storageLocation": "memory", @@ -4845,7 +4845,7 @@ }, "typeName": { "baseType": { - "id": 6918, + "id": 6807, "name": "address", "nodeType": "ElementaryTypeName", "src": "3926:7:28", @@ -4854,7 +4854,7 @@ "typeString": "address" } }, - "id": 6919, + "id": 6808, "length": null, "nodeType": "ArrayTypeName", "src": "3926:9:28", @@ -4867,14 +4867,14 @@ "visibility": "internal" } ], - "id": 6926, + "id": 6815, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "32", - "id": 6924, + "id": 6813, "isConstant": false, "isLValue": false, "isPure": true, @@ -4897,7 +4897,7 @@ "typeString": "int_const 2" } ], - "id": 6923, + "id": 6812, "isConstant": false, "isLValue": false, "isPure": true, @@ -4910,7 +4910,7 @@ }, "typeName": { "baseType": { - "id": 6921, + "id": 6810, "name": "address", "nodeType": "ElementaryTypeName", "src": "3968:7:28", @@ -4920,7 +4920,7 @@ "typeString": "address" } }, - "id": 6922, + "id": 6811, "length": null, "nodeType": "ArrayTypeName", "src": "3968:9:28", @@ -4930,7 +4930,7 @@ } } }, - "id": 6925, + "id": 6814, "isConstant": false, "isLValue": false, "isPure": true, @@ -4950,7 +4950,7 @@ { "expression": { "argumentTypes": null, - "id": 6931, + "id": 6820, "isConstant": false, "isLValue": false, "isPure": false, @@ -4959,22 +4959,22 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 6927, + "id": 6816, "name": "enterMarketsCToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6920, + "referencedDeclaration": 6809, "src": "3990:18:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 6929, + "id": 6818, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6928, + "id": 6817, "isConstant": false, "isLValue": false, "isPure": true, @@ -5004,11 +5004,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 6930, + "id": 6819, "name": "collateralCTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6905, + "referencedDeclaration": 6794, "src": "4014:23:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5021,14 +5021,14 @@ "typeString": "address" } }, - "id": 6932, + "id": 6821, "nodeType": "ExpressionStatement", "src": "3990:47:28" }, { "expression": { "argumentTypes": null, - "id": 6939, + "id": 6828, "isConstant": false, "isLValue": false, "isPure": false, @@ -5037,22 +5037,22 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 6933, + "id": 6822, "name": "enterMarketsCToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6920, + "referencedDeclaration": 6809, "src": "4047:18:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 6935, + "id": 6824, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 6934, + "id": 6823, "isConstant": false, "isLValue": false, "isPure": true, @@ -5087,32 +5087,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6936, + "id": 6825, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4071:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6937, + "id": 6826, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CDaiAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7594, + "referencedDeclaration": 7516, "src": "4071:27:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6938, + "id": 6827, "isConstant": false, "isLValue": false, "isPure": false, @@ -5132,21 +5132,21 @@ "typeString": "address" } }, - "id": 6940, + "id": 6829, "nodeType": "ExpressionStatement", "src": "4047:53:28" }, { "assignments": [ - 6944 + 6833 ], "declarations": [ { "constant": false, - "id": 6944, + "id": 6833, "name": "enterMarketErrors", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "4111:31:28", "stateVariable": false, "storageLocation": "memory", @@ -5156,7 +5156,7 @@ }, "typeName": { "baseType": { - "id": 6942, + "id": 6831, "name": "uint", "nodeType": "ElementaryTypeName", "src": "4111:4:28", @@ -5165,7 +5165,7 @@ "typeString": "uint256" } }, - "id": 6943, + "id": 6832, "length": null, "nodeType": "ArrayTypeName", "src": "4111:6:28", @@ -5178,17 +5178,17 @@ "visibility": "internal" } ], - "id": 6953, + "id": 6842, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6951, + "id": 6840, "name": "enterMarketsCToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6920, + "referencedDeclaration": 6809, "src": "4239:18:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -5213,32 +5213,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6946, + "id": 6835, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4171:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6947, + "id": 6836, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CompoundComptrollerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7585, + "referencedDeclaration": 7507, "src": "4171:42:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6948, + "id": 6837, "isConstant": false, "isLValue": false, "isPure": false, @@ -5260,7 +5260,7 @@ "typeString": "address" } ], - "id": 6945, + "id": 6834, "name": "IComptroller", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5271,7 +5271,7 @@ "typeString": "type(contract IComptroller)" } }, - "id": 6949, + "id": 6838, "isConstant": false, "isLValue": false, "isPure": false, @@ -5285,7 +5285,7 @@ "typeString": "contract IComptroller" } }, - "id": 6950, + "id": 6839, "isConstant": false, "isLValue": false, "isPure": false, @@ -5299,7 +5299,7 @@ "typeString": "function (address[] memory) external returns (uint256[] memory)" } }, - "id": 6952, + "id": 6841, "isConstant": false, "isLValue": false, "isPure": false, @@ -5326,7 +5326,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6959, + "id": 6848, "isConstant": false, "isLValue": false, "isPure": false, @@ -5335,22 +5335,22 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 6955, + "id": 6844, "name": "enterMarketErrors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6944, + "referencedDeclaration": 6833, "src": "4277:17:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 6957, + "id": 6846, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6956, + "id": 6845, "isConstant": false, "isLValue": false, "isPure": true, @@ -5381,7 +5381,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6958, + "id": 6847, "isConstant": false, "isLValue": false, "isPure": true, @@ -5405,7 +5405,7 @@ { "argumentTypes": null, "hexValue": "6d6b722d656e7465722d67656d2d6661696c6564", - "id": 6960, + "id": 6849, "isConstant": false, "isLValue": false, "isPure": true, @@ -5432,21 +5432,21 @@ "typeString": "literal_string \"mkr-enter-gem-failed\"" } ], - "id": 6954, + "id": 6843, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "4269:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6961, + "id": 6850, "isConstant": false, "isLValue": false, "isPure": false, @@ -5460,7 +5460,7 @@ "typeString": "tuple()" } }, - "id": 6962, + "id": 6851, "nodeType": "ExpressionStatement", "src": "4269:58:28" }, @@ -5474,7 +5474,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6968, + "id": 6857, "isConstant": false, "isLValue": false, "isPure": false, @@ -5483,22 +5483,22 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 6964, + "id": 6853, "name": "enterMarketErrors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6944, + "referencedDeclaration": 6833, "src": "4345:17:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 6966, + "id": 6855, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 6965, + "id": 6854, "isConstant": false, "isLValue": false, "isPure": true, @@ -5529,7 +5529,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6967, + "id": 6856, "isConstant": false, "isLValue": false, "isPure": true, @@ -5553,7 +5553,7 @@ { "argumentTypes": null, "hexValue": "6d6b722d656e7465722d6461692d6661696c6564", - "id": 6969, + "id": 6858, "isConstant": false, "isLValue": false, "isPure": true, @@ -5580,21 +5580,21 @@ "typeString": "literal_string \"mkr-enter-dai-failed\"" } ], - "id": 6963, + "id": 6852, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "4337:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6970, + "id": 6859, "isConstant": false, "isLValue": false, "isPure": false, @@ -5608,7 +5608,7 @@ "typeString": "tuple()" } }, - "id": 6971, + "id": 6860, "nodeType": "ExpressionStatement", "src": "4337:58:28" }, @@ -5619,7 +5619,7 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 6982, + "id": 6871, "isConstant": false, "isLValue": false, "isPure": false, @@ -5631,25 +5631,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6976, + "id": 6865, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "4439:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6977, + "id": 6866, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "cdpId", "nodeType": "MemberAccess", - "referencedDeclaration": 6627, + "referencedDeclaration": 6516, "src": "4439:17:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5669,11 +5669,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6973, + "id": 6862, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6899, + "referencedDeclaration": 6788, "src": "4422:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5688,7 +5688,7 @@ "typeString": "address" } ], - "id": 6972, + "id": 6861, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -5699,7 +5699,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6974, + "id": 6863, "isConstant": false, "isLValue": false, "isPure": false, @@ -5713,7 +5713,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6975, + "id": 6864, "isConstant": false, "isLValue": false, "isPure": false, @@ -5727,7 +5727,7 @@ "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 6978, + "id": 6867, "isConstant": false, "isLValue": false, "isPure": false, @@ -5749,7 +5749,7 @@ { "argumentTypes": null, "hexValue": "4554482d41", - "id": 6980, + "id": 6869, "isConstant": false, "isLValue": false, "isPure": true, @@ -5772,7 +5772,7 @@ "typeString": "literal_string \"ETH-A\"" } ], - "id": 6979, + "id": 6868, "isConstant": false, "isLValue": false, "isPure": true, @@ -5785,7 +5785,7 @@ }, "typeName": "bytes32" }, - "id": 6981, + "id": 6870, "isConstant": false, "isLValue": false, "isPure": true, @@ -5806,7 +5806,7 @@ } }, "falseBody": { - "id": 7084, + "id": 6973, "nodeType": "Block", "src": "5017:1194:28", "statements": [ @@ -5816,11 +5816,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7023, + "id": 6912, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6899, + "referencedDeclaration": 6788, "src": "5090:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5831,25 +5831,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7024, + "id": 6913, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "5118:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 7025, + "id": 6914, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "collateralJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 6631, + "referencedDeclaration": 6520, "src": "5118:33:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5863,32 +5863,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7026, + "id": 6915, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "5169:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7027, + "id": 6916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DaiJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7618, + "referencedDeclaration": 7540, "src": "5169:30:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7028, + "id": 6917, "isConstant": false, "isLValue": false, "isPure": false, @@ -5906,25 +5906,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7029, + "id": 6918, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "5219:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 7030, + "id": 6919, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "cdpId", "nodeType": "MemberAccess", - "referencedDeclaration": 6627, + "referencedDeclaration": 6516, "src": "5219:17:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5938,25 +5938,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7032, + "id": 6921, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "5296:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 7033, + "id": 6922, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "collateralJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 6631, + "referencedDeclaration": 6520, "src": "5296:33:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5965,11 +5965,11 @@ }, { "argumentTypes": null, - "id": 7034, + "id": 6923, "name": "collateral18", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6910, + "referencedDeclaration": 6799, "src": "5351:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5988,18 +5988,18 @@ "typeString": "uint256" } ], - "id": 7031, + "id": 6920, "name": "_convert18ToGemUnits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6762, + "referencedDeclaration": 6651, "src": "5254:20:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) returns (uint256)" } }, - "id": 7035, + "id": 6924, "isConstant": false, "isLValue": false, "isPure": false, @@ -6037,7 +6037,7 @@ "typeString": "uint256" } ], - "id": 7022, + "id": 6911, "name": "wipeAllAndFreeGem", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6048,7 +6048,7 @@ "typeString": "function (address,address,address,uint256,uint256)" } }, - "id": 7036, + "id": 6925, "isConstant": false, "isLValue": false, "isPure": false, @@ -6062,21 +6062,21 @@ "typeString": "tuple()" } }, - "id": 7037, + "id": 6926, "nodeType": "ExpressionStatement", "src": "5055:340:28" }, { "assignments": [ - 7039 + 6928 ], "declarations": [ { "constant": false, - "id": 7039, + "id": 6928, "name": "collateralFixedDec", "nodeType": "VariableDeclaration", - "scope": 7084, + "scope": 6973, "src": "5471:23:28", "stateVariable": false, "storageLocation": "default", @@ -6085,7 +6085,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7038, + "id": 6927, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5471:4:28", @@ -6098,17 +6098,17 @@ "visibility": "internal" } ], - "id": 7045, + "id": 6934, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7041, + "id": 6930, "name": "collateral18", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6910, + "referencedDeclaration": 6799, "src": "5534:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6119,25 +6119,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7042, + "id": 6931, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "5548:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 7043, + "id": 6932, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "collateralDecimals", "nodeType": "MemberAccess", - "referencedDeclaration": 6633, + "referencedDeclaration": 6522, "src": "5548:30:28", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -6156,18 +6156,18 @@ "typeString": "uint8" } ], - "id": 7040, + "id": 6929, "name": "_convert18ToDecimal", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6738, + "referencedDeclaration": 6627, "src": "5497:19:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint8_$returns$_t_uint256_$", "typeString": "function (uint256,uint8) returns (uint256)" } }, - "id": 7044, + "id": 6933, "isConstant": false, "isLValue": false, "isPure": false, @@ -6190,11 +6190,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7054, + "id": 6943, "name": "collateralCTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6905, + "referencedDeclaration": 6794, "src": "5766:23:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6203,11 +6203,11 @@ }, { "argumentTypes": null, - "id": 7055, + "id": 6944, "name": "collateralFixedDec", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7039, + "referencedDeclaration": 6928, "src": "5791:18:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6239,11 +6239,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7048, + "id": 6937, "name": "collateralCTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6905, + "referencedDeclaration": 6794, "src": "5702:23:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6258,7 +6258,7 @@ "typeString": "address" } ], - "id": 7047, + "id": 6936, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6269,7 +6269,7 @@ "typeString": "type(contract ICToken)" } }, - "id": 7049, + "id": 6938, "isConstant": false, "isLValue": false, "isPure": false, @@ -6283,7 +6283,7 @@ "typeString": "contract ICToken" } }, - "id": 7050, + "id": 6939, "isConstant": false, "isLValue": false, "isPure": false, @@ -6297,7 +6297,7 @@ "typeString": "function () view external returns (address)" } }, - "id": 7051, + "id": 6940, "isConstant": false, "isLValue": false, "isPure": false, @@ -6319,7 +6319,7 @@ "typeString": "address" } ], - "id": 7046, + "id": 6935, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6330,7 +6330,7 @@ "typeString": "type(contract IERC20)" } }, - "id": 7052, + "id": 6941, "isConstant": false, "isLValue": false, "isPure": false, @@ -6344,7 +6344,7 @@ "typeString": "contract IERC20" } }, - "id": 7053, + "id": 6942, "isConstant": false, "isLValue": false, "isPure": false, @@ -6358,7 +6358,7 @@ "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 7056, + "id": 6945, "isConstant": false, "isLValue": false, "isPure": false, @@ -6372,7 +6372,7 @@ "typeString": "bool" } }, - "id": 7057, + "id": 6946, "nodeType": "ExpressionStatement", "src": "5687:123:28" }, @@ -6386,7 +6386,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7066, + "id": 6955, "isConstant": false, "isLValue": false, "isPure": false, @@ -6396,11 +6396,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7063, + "id": 6952, "name": "collateralFixedDec", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7039, + "referencedDeclaration": 6928, "src": "5961:18:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6420,11 +6420,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7060, + "id": 6949, "name": "collateralCTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6905, + "referencedDeclaration": 6794, "src": "5910:23:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6439,7 +6439,7 @@ "typeString": "address" } ], - "id": 7059, + "id": 6948, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6450,7 +6450,7 @@ "typeString": "type(contract ICToken)" } }, - "id": 7061, + "id": 6950, "isConstant": false, "isLValue": false, "isPure": false, @@ -6464,7 +6464,7 @@ "typeString": "contract ICToken" } }, - "id": 7062, + "id": 6951, "isConstant": false, "isLValue": false, "isPure": false, @@ -6478,7 +6478,7 @@ "typeString": "function (uint256) external returns (uint256)" } }, - "id": 7064, + "id": 6953, "isConstant": false, "isLValue": false, "isPure": false, @@ -6497,7 +6497,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7065, + "id": 6954, "isConstant": false, "isLValue": false, "isPure": true, @@ -6521,7 +6521,7 @@ { "argumentTypes": null, "hexValue": "67656d2d737570706c792d6661696c", - "id": 7067, + "id": 6956, "isConstant": false, "isLValue": false, "isPure": true, @@ -6548,21 +6548,21 @@ "typeString": "literal_string \"gem-supply-fail\"" } ], - "id": 7058, + "id": 6947, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "5877:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7068, + "id": 6957, "isConstant": false, "isLValue": false, "isPure": false, @@ -6576,7 +6576,7 @@ "typeString": "tuple()" } }, - "id": 7069, + "id": 6958, "nodeType": "ExpressionStatement", "src": "5877:174:28" }, @@ -6590,7 +6590,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7080, + "id": 6969, "isConstant": false, "isLValue": false, "isPure": false, @@ -6600,11 +6600,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7077, + "id": 6966, "name": "totalDebt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6875, + "referencedDeclaration": 6764, "src": "6136:9:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6629,32 +6629,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7072, + "id": 6961, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "6098:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7073, + "id": 6962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CDaiAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7594, + "referencedDeclaration": 7516, "src": "6098:27:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7074, + "id": 6963, "isConstant": false, "isLValue": false, "isPure": false, @@ -6676,7 +6676,7 @@ "typeString": "address" } ], - "id": 7071, + "id": 6960, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -6687,7 +6687,7 @@ "typeString": "type(contract ICToken)" } }, - "id": 7075, + "id": 6964, "isConstant": false, "isLValue": false, "isPure": false, @@ -6701,7 +6701,7 @@ "typeString": "contract ICToken" } }, - "id": 7076, + "id": 6965, "isConstant": false, "isLValue": false, "isPure": false, @@ -6715,7 +6715,7 @@ "typeString": "function (uint256) external returns (uint256)" } }, - "id": 7078, + "id": 6967, "isConstant": false, "isLValue": false, "isPure": false, @@ -6734,7 +6734,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7079, + "id": 6968, "isConstant": false, "isLValue": false, "isPure": true, @@ -6758,7 +6758,7 @@ { "argumentTypes": null, "hexValue": "6461692d626f72726f772d6661696c", - "id": 7081, + "id": 6970, "isConstant": false, "isLValue": false, "isPure": true, @@ -6785,21 +6785,21 @@ "typeString": "literal_string \"dai-borrow-fail\"" } ], - "id": 7070, + "id": 6959, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "6065:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7082, + "id": 6971, "isConstant": false, "isLValue": false, "isPure": false, @@ -6813,17 +6813,17 @@ "typeString": "tuple()" } }, - "id": 7083, + "id": 6972, "nodeType": "ExpressionStatement", "src": "6065:135:28" } ] }, - "id": 7085, + "id": 6974, "nodeType": "IfStatement", "src": "4406:1805:28", "trueBody": { - "id": 7021, + "id": 6910, "nodeType": "Block", "src": "4479:532:28", "statements": [ @@ -6833,11 +6833,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6984, + "id": 6873, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6899, + "referencedDeclaration": 6788, "src": "4528:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6851,32 +6851,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6985, + "id": 6874, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4556:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6986, + "id": 6875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "EthJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7609, + "referencedDeclaration": 7531, "src": "4556:30:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6987, + "id": 6876, "isConstant": false, "isLValue": false, "isPure": false, @@ -6897,32 +6897,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6988, + "id": 6877, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4606:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6989, + "id": 6878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DaiJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7618, + "referencedDeclaration": 7540, "src": "4606:30:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6990, + "id": 6879, "isConstant": false, "isLValue": false, "isPure": false, @@ -6940,25 +6940,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6991, + "id": 6880, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "4656:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6992, + "id": 6881, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "cdpId", "nodeType": "MemberAccess", - "referencedDeclaration": 6627, + "referencedDeclaration": 6516, "src": "4656:17:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -6967,11 +6967,11 @@ }, { "argumentTypes": null, - "id": 6993, + "id": 6882, "name": "collateral18", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6910, + "referencedDeclaration": 6799, "src": "4691:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7002,7 +7002,7 @@ "typeString": "uint256" } ], - "id": 6983, + "id": 6872, "name": "wipeAllAndFreeETH", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7013,7 +7013,7 @@ "typeString": "function (address,address,address,uint256,uint256)" } }, - "id": 6994, + "id": 6883, "isConstant": false, "isLValue": false, "isPure": false, @@ -7027,7 +7027,7 @@ "typeString": "tuple()" } }, - "id": 6995, + "id": 6884, "nodeType": "ExpressionStatement", "src": "4493:224:28" }, @@ -7040,11 +7040,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7003, + "id": 6892, "name": "collateral18", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6910, + "referencedDeclaration": 6799, "src": "4836:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7071,32 +7071,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6997, + "id": 6886, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4792:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6998, + "id": 6887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "4792:29:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6999, + "id": 6888, "isConstant": false, "isLValue": false, "isPure": false, @@ -7118,7 +7118,7 @@ "typeString": "address" } ], - "id": 6996, + "id": 6885, "name": "ICEther", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7129,7 +7129,7 @@ "typeString": "type(contract ICEther)" } }, - "id": 7000, + "id": 6889, "isConstant": false, "isLValue": false, "isPure": false, @@ -7143,7 +7143,7 @@ "typeString": "contract ICEther" } }, - "id": 7001, + "id": 6890, "isConstant": false, "isLValue": false, "isPure": false, @@ -7157,7 +7157,7 @@ "typeString": "function () payable external" } }, - "id": 7002, + "id": 6891, "isConstant": false, "isLValue": false, "isPure": false, @@ -7171,7 +7171,7 @@ "typeString": "function (uint256) pure returns (function () payable external)" } }, - "id": 7004, + "id": 6893, "isConstant": false, "isLValue": false, "isPure": false, @@ -7185,7 +7185,7 @@ "typeString": "function () payable external" } }, - "id": 7005, + "id": 6894, "isConstant": false, "isLValue": false, "isPure": false, @@ -7199,7 +7199,7 @@ "typeString": "tuple()" } }, - "id": 7006, + "id": 6895, "nodeType": "ExpressionStatement", "src": "4784:67:28" }, @@ -7213,7 +7213,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7017, + "id": 6906, "isConstant": false, "isLValue": false, "isPure": false, @@ -7223,11 +7223,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7014, + "id": 6903, "name": "totalDebt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6875, + "referencedDeclaration": 6764, "src": "4936:9:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7252,32 +7252,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7009, + "id": 6898, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4898:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7010, + "id": 6899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CDaiAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7594, + "referencedDeclaration": 7516, "src": "4898:27:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7011, + "id": 6900, "isConstant": false, "isLValue": false, "isPure": false, @@ -7299,7 +7299,7 @@ "typeString": "address" } ], - "id": 7008, + "id": 6897, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -7310,7 +7310,7 @@ "typeString": "type(contract ICToken)" } }, - "id": 7012, + "id": 6901, "isConstant": false, "isLValue": false, "isPure": false, @@ -7324,7 +7324,7 @@ "typeString": "contract ICToken" } }, - "id": 7013, + "id": 6902, "isConstant": false, "isLValue": false, "isPure": false, @@ -7338,7 +7338,7 @@ "typeString": "function (uint256) external returns (uint256)" } }, - "id": 7015, + "id": 6904, "isConstant": false, "isLValue": false, "isPure": false, @@ -7357,7 +7357,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7016, + "id": 6905, "isConstant": false, "isLValue": false, "isPure": true, @@ -7381,7 +7381,7 @@ { "argumentTypes": null, "hexValue": "6461692d626f72726f772d6661696c", - "id": 7018, + "id": 6907, "isConstant": false, "isLValue": false, "isPure": true, @@ -7408,21 +7408,21 @@ "typeString": "literal_string \"dai-borrow-fail\"" } ], - "id": 7007, + "id": 6896, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "4865:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7019, + "id": 6908, "isConstant": false, "isLValue": false, "isPure": false, @@ -7436,7 +7436,7 @@ "typeString": "tuple()" } }, - "id": 7020, + "id": 6909, "nodeType": "ExpressionStatement", "src": "4865:135:28" } @@ -7446,22 +7446,22 @@ ] }, "documentation": null, - "id": 7087, + "id": 6976, "implemented": true, "kind": "function", "modifiers": [], "name": "importMakerVaultPostLoan", "nodeType": "FunctionDefinition", "parameters": { - "id": 6872, + "id": 6761, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6865, + "id": 6754, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 7087, + "scope": 6976, "src": "3109:12:28", "stateVariable": false, "storageLocation": "default", @@ -7470,7 +7470,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6864, + "id": 6753, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3109:4:28", @@ -7484,10 +7484,10 @@ }, { "constant": false, - "id": 6867, + "id": 6756, "name": "_aaveFee", "nodeType": "VariableDeclaration", - "scope": 7087, + "scope": 6976, "src": "3131:13:28", "stateVariable": false, "storageLocation": "default", @@ -7496,7 +7496,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6866, + "id": 6755, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3131:4:28", @@ -7510,10 +7510,10 @@ }, { "constant": false, - "id": 6869, + "id": 6758, "name": "_protocolFee", "nodeType": "VariableDeclaration", - "scope": 7087, + "scope": 6976, "src": "3154:17:28", "stateVariable": false, "storageLocation": "default", @@ -7522,7 +7522,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6868, + "id": 6757, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3154:4:28", @@ -7536,10 +7536,10 @@ }, { "constant": false, - "id": 6871, + "id": 6760, "name": "_data", "nodeType": "VariableDeclaration", - "scope": 7087, + "scope": 6976, "src": "3181:20:28", "stateVariable": false, "storageLocation": "calldata", @@ -7548,7 +7548,7 @@ "typeString": "bytes" }, "typeName": { - "id": 6870, + "id": 6759, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3181:5:28", @@ -7564,12 +7564,12 @@ "src": "3099:108:28" }, "returnParameters": { - "id": 6873, + "id": 6762, "nodeType": "ParameterList", "parameters": [], "src": "3217:0:28" }, - "scope": 7188, + "scope": 7077, "src": "3066:3151:28", "stateMutability": "nonpayable", "superFunction": null, @@ -7577,37 +7577,37 @@ }, { "body": { - "id": 7186, + "id": 7075, "nodeType": "Block", "src": "7389:1524:28", "statements": [ { "assignments": [ - 7101 + 6990 ], "declarations": [ { "constant": false, - "id": 7101, + "id": 6990, "name": "addressRegistry", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "7431:31:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { "contractScope": null, - "id": 7100, + "id": 6989, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "7431:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -7615,17 +7615,17 @@ "visibility": "internal" } ], - "id": 7105, + "id": 6994, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7103, + "id": 6992, "name": "addressRegistryAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7093, + "referencedDeclaration": 6982, "src": "7481:22:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7640,18 +7640,18 @@ "typeString": "address" } ], - "id": 7102, + "id": 6991, "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "7465:15:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, - "id": 7104, + "id": 6993, "isConstant": false, "isLValue": false, "isPure": false, @@ -7661,7 +7661,7 @@ "nodeType": "FunctionCall", "src": "7465:39:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -7670,15 +7670,15 @@ }, { "assignments": [ - 7107 + 6996 ], "declarations": [ { "constant": false, - "id": 7107, + "id": 6996, "name": "cdpManager", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "7567:18:28", "stateVariable": false, "storageLocation": "default", @@ -7687,7 +7687,7 @@ "typeString": "address" }, "typeName": { - "id": 7106, + "id": 6995, "name": "address", "nodeType": "ElementaryTypeName", "src": "7567:7:28", @@ -7701,7 +7701,7 @@ "visibility": "internal" } ], - "id": 7111, + "id": 7000, "initialValue": { "argumentTypes": null, "arguments": [], @@ -7709,32 +7709,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7108, + "id": 6997, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "7588:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7109, + "id": 6998, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DssCdpManagerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7627, + "referencedDeclaration": 7549, "src": "7588:36:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7110, + "id": 6999, "isConstant": false, "isLValue": false, "isPure": false, @@ -7753,15 +7753,15 @@ }, { "assignments": [ - 7113 + 7002 ], "declarations": [ { "constant": false, - "id": 7113, + "id": 7002, "name": "daiDebt", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "7657:12:28", "stateVariable": false, "storageLocation": "default", @@ -7770,7 +7770,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7112, + "id": 7001, "name": "uint", "nodeType": "ElementaryTypeName", "src": "7657:4:28", @@ -7783,17 +7783,17 @@ "visibility": "internal" } ], - "id": 7118, + "id": 7007, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7115, + "id": 7004, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7107, + "referencedDeclaration": 6996, "src": "7685:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7802,11 +7802,11 @@ }, { "argumentTypes": null, - "id": 7116, + "id": 7005, "name": "cdpId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7095, + "referencedDeclaration": 6984, "src": "7697:5:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7825,18 +7825,18 @@ "typeString": "uint256" } ], - "id": 7114, + "id": 7003, "name": "getVaultDebt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6816, + "referencedDeclaration": 6705, "src": "7672:12:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) view returns (uint256)" } }, - "id": 7117, + "id": 7006, "isConstant": false, "isLValue": false, "isPure": false, @@ -7855,15 +7855,15 @@ }, { "assignments": [ - 7120 + 7009 ], "declarations": [ { "constant": false, - "id": 7120, + "id": 7009, "name": "addressAndExecuteOperationCalldataParams", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "7854:53:28", "stateVariable": false, "storageLocation": "memory", @@ -7872,7 +7872,7 @@ "typeString": "bytes" }, "typeName": { - "id": 7119, + "id": 7008, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7854:5:28", @@ -7885,7 +7885,7 @@ "visibility": "internal" } ], - "id": 7129, + "id": 7018, "initialValue": { "argumentTypes": null, "arguments": [ @@ -7894,11 +7894,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7125, + "id": 7014, "name": "dedgeMakerManagerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7089, + "referencedDeclaration": 6978, "src": "7951:24:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7915,18 +7915,18 @@ ], "expression": { "argumentTypes": null, - "id": 7123, + "id": 7012, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "7940:3:28", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7124, + "id": 7013, "isConstant": false, "isLValue": false, "isPure": true, @@ -7940,7 +7940,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 7126, + "id": 7015, "isConstant": false, "isLValue": false, "isPure": false, @@ -7956,11 +7956,11 @@ }, { "argumentTypes": null, - "id": 7127, + "id": 7016, "name": "executeOperationCalldataParams", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7097, + "referencedDeclaration": 6986, "src": "7990:30:28", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -7981,18 +7981,18 @@ ], "expression": { "argumentTypes": null, - "id": 7121, + "id": 7010, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "7910:3:28", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7122, + "id": 7011, "isConstant": false, "isLValue": false, "isPure": true, @@ -8006,7 +8006,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 7128, + "id": 7017, "isConstant": false, "isLValue": false, "isPure": false, @@ -8025,15 +8025,15 @@ }, { "assignments": [ - 7131 + 7020 ], "declarations": [ { "constant": false, - "id": 7131, + "id": 7020, "name": "lendingPool", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "8085:24:28", "stateVariable": false, "storageLocation": "default", @@ -8043,7 +8043,7 @@ }, "typeName": { "contractScope": null, - "id": 7130, + "id": 7019, "name": "ILendingPool", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 546, @@ -8057,7 +8057,7 @@ "visibility": "internal" } ], - "id": 7141, + "id": 7030, "initialValue": { "argumentTypes": null, "arguments": [ @@ -8076,32 +8076,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7134, + "id": 7023, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "8185:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7135, + "id": 7024, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AaveLendingPoolAddressProviderAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7573, + "referencedDeclaration": 7495, "src": "8185:53:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7136, + "id": 7025, "isConstant": false, "isLValue": false, "isPure": false, @@ -8123,7 +8123,7 @@ "typeString": "address" } ], - "id": 7133, + "id": 7022, "name": "ILendingPoolAddressesProvider", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8134,7 +8134,7 @@ "typeString": "type(contract ILendingPoolAddressesProvider)" } }, - "id": 7137, + "id": 7026, "isConstant": false, "isLValue": false, "isPure": false, @@ -8148,7 +8148,7 @@ "typeString": "contract ILendingPoolAddressesProvider" } }, - "id": 7138, + "id": 7027, "isConstant": false, "isLValue": false, "isPure": false, @@ -8162,7 +8162,7 @@ "typeString": "function () view external returns (address)" } }, - "id": 7139, + "id": 7028, "isConstant": false, "isLValue": false, "isPure": false, @@ -8184,7 +8184,7 @@ "typeString": "address" } ], - "id": 7132, + "id": 7021, "name": "ILendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8195,7 +8195,7 @@ "typeString": "type(contract ILendingPool)" } }, - "id": 7140, + "id": 7029, "isConstant": false, "isLValue": false, "isPure": false, @@ -8223,32 +8223,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7143, + "id": 7032, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "8301:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7144, + "id": 7033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DssCdpManagerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7627, + "referencedDeclaration": 7549, "src": "8301:36:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7145, + "id": 7034, "isConstant": false, "isLValue": false, "isPure": false, @@ -8264,11 +8264,11 @@ }, { "argumentTypes": null, - "id": 7146, + "id": 7035, "name": "cdpId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7095, + "referencedDeclaration": 6984, "src": "8341:5:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8277,11 +8277,11 @@ }, { "argumentTypes": null, - "id": 7147, + "id": 7036, "name": "dedgeMakerManagerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7089, + "referencedDeclaration": 6978, "src": "8348:24:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8291,7 +8291,7 @@ { "argumentTypes": null, "hexValue": "31", - "id": 7148, + "id": 7037, "isConstant": false, "isLValue": false, "isPure": true, @@ -8326,7 +8326,7 @@ "typeString": "int_const 1" } ], - "id": 7142, + "id": 7031, "name": "cdpAllow", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8337,7 +8337,7 @@ "typeString": "function (address,uint256,address,uint256)" } }, - "id": 7149, + "id": 7038, "isConstant": false, "isLValue": false, "isPure": false, @@ -8351,7 +8351,7 @@ "typeString": "tuple()" } }, - "id": 7150, + "id": 7039, "nodeType": "ExpressionStatement", "src": "8292:84:28" }, @@ -8361,11 +8361,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7152, + "id": 7041, "name": "dacProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7091, + "referencedDeclaration": 6980, "src": "8404:15:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -8377,11 +8377,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7154, + "id": 7043, "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7131, + "referencedDeclaration": 7020, "src": "8429:11:28", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", @@ -8396,7 +8396,7 @@ "typeString": "contract ILendingPool" } ], - "id": 7153, + "id": 7042, "isConstant": false, "isLValue": false, "isPure": true, @@ -8409,7 +8409,7 @@ }, "typeName": "address" }, - "id": 7155, + "id": 7044, "isConstant": false, "isLValue": false, "isPure": false, @@ -8435,18 +8435,18 @@ "typeString": "address" } ], - "id": 7151, + "id": 7040, "name": "_proxyGuardPermit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6675, + "referencedDeclaration": 6564, "src": "8386:17:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", "typeString": "function (address payable,address)" } }, - "id": 7156, + "id": 7045, "isConstant": false, "isLValue": false, "isPure": false, @@ -8460,7 +8460,7 @@ "typeString": "tuple()" } }, - "id": 7157, + "id": 7046, "nodeType": "ExpressionStatement", "src": "8386:56:28" }, @@ -8470,11 +8470,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7161, + "id": 7050, "name": "dacProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7091, + "referencedDeclaration": 6980, "src": "8488:15:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -8488,32 +8488,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7162, + "id": 7051, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "8517:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7163, + "id": 7052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DaiAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7600, + "referencedDeclaration": 7522, "src": "8517:26:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7164, + "id": 7053, "isConstant": false, "isLValue": false, "isPure": false, @@ -8529,11 +8529,11 @@ }, { "argumentTypes": null, - "id": 7165, + "id": 7054, "name": "daiDebt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7113, + "referencedDeclaration": 7002, "src": "8559:7:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8542,11 +8542,11 @@ }, { "argumentTypes": null, - "id": 7166, + "id": 7055, "name": "addressAndExecuteOperationCalldataParams", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7120, + "referencedDeclaration": 7009, "src": "8580:40:28", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -8575,18 +8575,18 @@ ], "expression": { "argumentTypes": null, - "id": 7158, + "id": 7047, "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7131, + "referencedDeclaration": 7020, "src": "8453:11:28", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", "typeString": "contract ILendingPool" } }, - "id": 7160, + "id": 7049, "isConstant": false, "isLValue": false, "isPure": false, @@ -8600,7 +8600,7 @@ "typeString": "function (address,address,uint256,bytes memory) external" } }, - "id": 7167, + "id": 7056, "isConstant": false, "isLValue": false, "isPure": false, @@ -8614,7 +8614,7 @@ "typeString": "tuple()" } }, - "id": 7168, + "id": 7057, "nodeType": "ExpressionStatement", "src": "8453:177:28" }, @@ -8629,32 +8629,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7170, + "id": 7059, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "8721:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7171, + "id": 7060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DssCdpManagerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7627, + "referencedDeclaration": 7549, "src": "8721:36:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7172, + "id": 7061, "isConstant": false, "isLValue": false, "isPure": false, @@ -8670,11 +8670,11 @@ }, { "argumentTypes": null, - "id": 7173, + "id": 7062, "name": "cdpId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7095, + "referencedDeclaration": 6984, "src": "8761:5:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -8687,7 +8687,7 @@ { "argumentTypes": null, "hexValue": "31", - "id": 7175, + "id": 7064, "isConstant": false, "isLValue": false, "isPure": true, @@ -8710,7 +8710,7 @@ "typeString": "int_const 1" } ], - "id": 7174, + "id": 7063, "isConstant": false, "isLValue": false, "isPure": true, @@ -8723,7 +8723,7 @@ }, "typeName": "address" }, - "id": 7176, + "id": 7065, "isConstant": false, "isLValue": false, "isPure": true, @@ -8753,7 +8753,7 @@ "typeString": "address payable" } ], - "id": 7169, + "id": 7058, "name": "give", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -8764,7 +8764,7 @@ "typeString": "function (address,uint256,address)" } }, - "id": 7177, + "id": 7066, "isConstant": false, "isLValue": false, "isPure": false, @@ -8778,7 +8778,7 @@ "typeString": "tuple()" } }, - "id": 7178, + "id": 7067, "nodeType": "ExpressionStatement", "src": "8716:63:28" }, @@ -8788,11 +8788,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7180, + "id": 7069, "name": "dacProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7091, + "referencedDeclaration": 6980, "src": "8868:15:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -8804,11 +8804,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7182, + "id": 7071, "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7131, + "referencedDeclaration": 7020, "src": "8893:11:28", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", @@ -8823,7 +8823,7 @@ "typeString": "contract ILendingPool" } ], - "id": 7181, + "id": 7070, "isConstant": false, "isLValue": false, "isPure": true, @@ -8836,7 +8836,7 @@ }, "typeName": "address" }, - "id": 7183, + "id": 7072, "isConstant": false, "isLValue": false, "isPure": false, @@ -8862,18 +8862,18 @@ "typeString": "address" } ], - "id": 7179, + "id": 7068, "name": "_proxyGuardForbid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6716, + "referencedDeclaration": 6605, "src": "8850:17:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", "typeString": "function (address payable,address)" } }, - "id": 7184, + "id": 7073, "isConstant": false, "isLValue": false, "isPure": false, @@ -8887,29 +8887,29 @@ "typeString": "tuple()" } }, - "id": 7185, + "id": 7074, "nodeType": "ExpressionStatement", "src": "8850:56:28" } ] }, "documentation": null, - "id": 7187, + "id": 7076, "implemented": true, "kind": "function", "modifiers": [], "name": "importMakerVault", "nodeType": "FunctionDefinition", "parameters": { - "id": 7098, + "id": 6987, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7089, + "id": 6978, "name": "dedgeMakerManagerAddress", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7185:32:28", "stateVariable": false, "storageLocation": "default", @@ -8918,7 +8918,7 @@ "typeString": "address" }, "typeName": { - "id": 7088, + "id": 6977, "name": "address", "nodeType": "ElementaryTypeName", "src": "7185:7:28", @@ -8933,10 +8933,10 @@ }, { "constant": false, - "id": 7091, + "id": 6980, "name": "dacProxyAddress", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7227:31:28", "stateVariable": false, "storageLocation": "default", @@ -8945,7 +8945,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7090, + "id": 6979, "name": "address", "nodeType": "ElementaryTypeName", "src": "7227:15:28", @@ -8960,10 +8960,10 @@ }, { "constant": false, - "id": 7093, + "id": 6982, "name": "addressRegistryAddress", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7268:30:28", "stateVariable": false, "storageLocation": "default", @@ -8972,7 +8972,7 @@ "typeString": "address" }, "typeName": { - "id": 7092, + "id": 6981, "name": "address", "nodeType": "ElementaryTypeName", "src": "7268:7:28", @@ -8987,10 +8987,10 @@ }, { "constant": false, - "id": 7095, + "id": 6984, "name": "cdpId", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7308:10:28", "stateVariable": false, "storageLocation": "default", @@ -8999,7 +8999,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7094, + "id": 6983, "name": "uint", "nodeType": "ElementaryTypeName", "src": "7308:4:28", @@ -9013,10 +9013,10 @@ }, { "constant": false, - "id": 7097, + "id": 6986, "name": "executeOperationCalldataParams", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7328:45:28", "stateVariable": false, "storageLocation": "calldata", @@ -9025,7 +9025,7 @@ "typeString": "bytes" }, "typeName": { - "id": 7096, + "id": 6985, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7328:5:28", @@ -9041,19 +9041,19 @@ "src": "7175:204:28" }, "returnParameters": { - "id": 7099, + "id": 6988, "nodeType": "ParameterList", "parameters": [], "src": "7389:0:28" }, - "scope": 7188, + "scope": 7077, "src": "7150:1763:28", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" } ], - "scope": 7189, + "scope": 7078, "src": "845:8070:28" } ], @@ -9063,14 +9063,14 @@ "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol", "exportedSymbols": { "DedgeMakerManager": [ - 7188 + 7077 ] }, - "id": 7189, + "id": 7078, "nodeType": "SourceUnit", "nodes": [ { - "id": 6597, + "id": 6486, "literals": [ "solidity", "0.5", @@ -9080,7 +9080,7 @@ "src": "78:23:28" }, { - "id": 6598, + "id": 6487, "literals": [ "experimental", "ABIEncoderV2" @@ -9091,9 +9091,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol", "file": "../lib/aave/FlashLoanReceiverBase.sol", - "id": 6599, + "id": 6488, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 2139, "src": "137:47:28", "symbolAliases": [], @@ -9102,9 +9102,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol", "file": "../lib/makerdao/DssProxyActionsBase.sol", - "id": 6600, + "id": 6489, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 4712, "src": "186:49:28", "symbolAliases": [], @@ -9113,9 +9113,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol", "file": "../lib/uniswap/UniswapBase.sol", - "id": 6601, + "id": 6490, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 4919, "src": "237:40:28", "symbolAliases": [], @@ -9124,9 +9124,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol", "file": "../lib/dapphub/Guard.sol", - "id": 6602, + "id": 6491, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 3196, "src": "279:34:28", "symbolAliases": [], @@ -9135,10 +9135,10 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", "file": "../proxies/DACProxy.sol", - "id": 6603, + "id": 6492, "nodeType": "ImportDirective", - "scope": 7189, - "sourceUnit": 7323, + "scope": 7078, + "sourceUnit": 7245, "src": "315:33:28", "symbolAliases": [], "unitAlias": "" @@ -9146,9 +9146,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol", "file": "../interfaces/aave/ILendingPoolAddressesProvider.sol", - "id": 6604, + "id": 6493, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 660, "src": "351:62:28", "symbolAliases": [], @@ -9157,9 +9157,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol", "file": "../interfaces/aave/ILendingPool.sol", - "id": 6605, + "id": 6494, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 547, "src": "414:45:28", "symbolAliases": [], @@ -9168,9 +9168,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol", "file": "../interfaces/uniswap/IUniswapExchange.sol", - "id": 6606, + "id": 6495, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 1910, "src": "461:52:28", "symbolAliases": [], @@ -9179,9 +9179,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol", "file": "../interfaces/uniswap/IUniswapFactory.sol", - "id": 6607, + "id": 6496, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 1950, "src": "514:51:28", "symbolAliases": [], @@ -9190,9 +9190,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol", "file": "../interfaces/IERC20.sol", - "id": 6608, + "id": 6497, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 121, "src": "567:34:28", "symbolAliases": [], @@ -9201,9 +9201,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol", "file": "../interfaces/compound/IComptroller.sol", - "id": 6609, + "id": 6498, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 1097, "src": "603:49:28", "symbolAliases": [], @@ -9212,9 +9212,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol", "file": "../interfaces/compound/ICToken.sol", - "id": 6610, + "id": 6499, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 859, "src": "653:44:28", "symbolAliases": [], @@ -9223,9 +9223,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol", "file": "../interfaces/compound/ICEther.sol", - "id": 6611, + "id": 6500, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 733, "src": "698:44:28", "symbolAliases": [], @@ -9234,9 +9234,9 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol", "file": "../interfaces/makerdao/IDssProxyActions.sol", - "id": 6612, + "id": 6501, "nodeType": "ImportDirective", - "scope": 7189, + "scope": 7078, "sourceUnit": 1566, "src": "744:53:28", "symbolAliases": [], @@ -9245,10 +9245,10 @@ { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol", "file": "../registries/AddressRegistry.sol", - "id": 6613, + "id": 6502, "nodeType": "ImportDirective", - "scope": 7189, - "sourceUnit": 7629, + "scope": 7078, + "sourceUnit": 7551, "src": "799:43:28", "symbolAliases": [], "unitAlias": "" @@ -9259,7 +9259,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 6614, + "id": 6503, "name": "DssProxyActionsBase", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4711, @@ -9269,7 +9269,7 @@ "typeString": "contract DssProxyActionsBase" } }, - "id": 6615, + "id": 6504, "nodeType": "InheritanceSpecifier", "src": "875:19:28" } @@ -9281,9 +9281,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 7188, + "id": 7077, "linearizedBaseContracts": [ - 7188, + 7077, 4711, 4144 ], @@ -9292,31 +9292,31 @@ "nodes": [ { "body": { - "id": 6618, + "id": 6507, "nodeType": "Block", "src": "930:2:28", "statements": [] }, "documentation": null, - "id": 6619, + "id": 6508, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 6616, + "id": 6505, "nodeType": "ParameterList", "parameters": [], "src": "910:2:28" }, "returnParameters": { - "id": 6617, + "id": 6506, "nodeType": "ParameterList", "parameters": [], "src": "930:0:28" }, - "scope": 7188, + "scope": 7077, "src": "901:31:28", "stateMutability": "payable", "superFunction": null, @@ -9324,31 +9324,31 @@ }, { "body": { - "id": 6622, + "id": 6511, "nodeType": "Block", "src": "960:2:28", "statements": [] }, "documentation": null, - "id": 6623, + "id": 6512, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 6620, + "id": 6509, "nodeType": "ParameterList", "parameters": [], "src": "950:2:28" }, "returnParameters": { - "id": 6621, + "id": 6510, "nodeType": "ParameterList", "parameters": [], "src": "960:0:28" }, - "scope": 7188, + "scope": 7077, "src": "938:24:28", "stateMutability": "nonpayable", "superFunction": null, @@ -9356,14 +9356,14 @@ }, { "canonicalName": "DedgeMakerManager.ImportMakerVaultCallData", - "id": 6634, + "id": 6523, "members": [ { "constant": false, - "id": 6625, + "id": 6514, "name": "addressRegistryAddress", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1010:30:28", "stateVariable": false, "storageLocation": "default", @@ -9372,7 +9372,7 @@ "typeString": "address" }, "typeName": { - "id": 6624, + "id": 6513, "name": "address", "nodeType": "ElementaryTypeName", "src": "1010:7:28", @@ -9387,10 +9387,10 @@ }, { "constant": false, - "id": 6627, + "id": 6516, "name": "cdpId", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1050:10:28", "stateVariable": false, "storageLocation": "default", @@ -9399,7 +9399,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6626, + "id": 6515, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1050:4:28", @@ -9413,10 +9413,10 @@ }, { "constant": false, - "id": 6629, + "id": 6518, "name": "collateralCTokenAddress", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1070:31:28", "stateVariable": false, "storageLocation": "default", @@ -9425,7 +9425,7 @@ "typeString": "address" }, "typeName": { - "id": 6628, + "id": 6517, "name": "address", "nodeType": "ElementaryTypeName", "src": "1070:7:28", @@ -9440,10 +9440,10 @@ }, { "constant": false, - "id": 6631, + "id": 6520, "name": "collateralJoinAddress", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1111:29:28", "stateVariable": false, "storageLocation": "default", @@ -9452,7 +9452,7 @@ "typeString": "address" }, "typeName": { - "id": 6630, + "id": 6519, "name": "address", "nodeType": "ElementaryTypeName", "src": "1111:7:28", @@ -9467,10 +9467,10 @@ }, { "constant": false, - "id": 6633, + "id": 6522, "name": "collateralDecimals", "nodeType": "VariableDeclaration", - "scope": 6634, + "scope": 6523, "src": "1150:24:28", "stateVariable": false, "storageLocation": "default", @@ -9479,7 +9479,7 @@ "typeString": "uint8" }, "typeName": { - "id": 6632, + "id": 6521, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1150:5:28", @@ -9494,27 +9494,27 @@ ], "name": "ImportMakerVaultCallData", "nodeType": "StructDefinition", - "scope": 7188, + "scope": 7077, "src": "968:213:28", "visibility": "public" }, { "body": { - "id": 6674, + "id": 6563, "nodeType": "Block", "src": "1290:214:28", "statements": [ { "assignments": [ - 6642 + 6531 ], "declarations": [ { "constant": false, - "id": 6642, + "id": 6531, "name": "g", "nodeType": "VariableDeclaration", - "scope": 6674, + "scope": 6563, "src": "1300:9:28", "stateVariable": false, "storageLocation": "default", @@ -9523,7 +9523,7 @@ "typeString": "address" }, "typeName": { - "id": 6641, + "id": 6530, "name": "address", "nodeType": "ElementaryTypeName", "src": "1300:7:28", @@ -9537,7 +9537,7 @@ "visibility": "internal" } ], - "id": 6650, + "id": 6539, "initialValue": { "argumentTypes": null, "arguments": [ @@ -9551,11 +9551,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6645, + "id": 6534, "name": "proxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6636, + "referencedDeclaration": 6525, "src": "1329:12:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -9570,18 +9570,18 @@ "typeString": "address payable" } ], - "id": 6644, + "id": 6533, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1320:8:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 6646, + "id": 6535, "isConstant": false, "isLValue": false, "isPure": false, @@ -9591,11 +9591,11 @@ "nodeType": "FunctionCall", "src": "1320:22:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 6647, + "id": 6536, "isConstant": false, "isLValue": false, "isPure": false, @@ -9609,7 +9609,7 @@ "typeString": "function () view external returns (contract DSAuthority)" } }, - "id": 6648, + "id": 6537, "isConstant": false, "isLValue": false, "isPure": false, @@ -9631,7 +9631,7 @@ "typeString": "contract DSAuthority" } ], - "id": 6643, + "id": 6532, "isConstant": false, "isLValue": false, "isPure": true, @@ -9644,7 +9644,7 @@ }, "typeName": "address" }, - "id": 6649, + "id": 6538, "isConstant": false, "isLValue": false, "isPure": false, @@ -9676,11 +9676,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6658, + "id": 6547, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6638, + "referencedDeclaration": 6527, "src": "1421:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9695,7 +9695,7 @@ "typeString": "address" } ], - "id": 6657, + "id": 6546, "isConstant": false, "isLValue": false, "isPure": true, @@ -9708,7 +9708,7 @@ }, "typeName": "address" }, - "id": 6659, + "id": 6548, "isConstant": false, "isLValue": false, "isPure": false, @@ -9730,7 +9730,7 @@ "typeString": "address" } ], - "id": 6656, + "id": 6545, "isConstant": false, "isLValue": false, "isPure": true, @@ -9743,7 +9743,7 @@ }, "typeName": "bytes20" }, - "id": 6660, + "id": 6549, "isConstant": false, "isLValue": false, "isPure": false, @@ -9765,7 +9765,7 @@ "typeString": "bytes20" } ], - "id": 6655, + "id": 6544, "isConstant": false, "isLValue": false, "isPure": true, @@ -9778,7 +9778,7 @@ }, "typeName": "bytes32" }, - "id": 6661, + "id": 6550, "isConstant": false, "isLValue": false, "isPure": false, @@ -9802,11 +9802,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6663, + "id": 6552, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6642, + "referencedDeclaration": 6531, "src": "1449:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9821,7 +9821,7 @@ "typeString": "address" } ], - "id": 6662, + "id": 6551, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -9832,7 +9832,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6664, + "id": 6553, "isConstant": false, "isLValue": false, "isPure": false, @@ -9846,7 +9846,7 @@ "typeString": "contract DSGuard" } }, - "id": 6665, + "id": 6554, "isConstant": false, "isLValue": false, "isPure": false, @@ -9860,7 +9860,7 @@ "typeString": "function () view external returns (bytes32)" } }, - "id": 6666, + "id": 6555, "isConstant": false, "isLValue": false, "isPure": false, @@ -9884,11 +9884,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6668, + "id": 6557, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6642, + "referencedDeclaration": 6531, "src": "1479:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9903,7 +9903,7 @@ "typeString": "address" } ], - "id": 6667, + "id": 6556, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -9914,7 +9914,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6669, + "id": 6558, "isConstant": false, "isLValue": false, "isPure": false, @@ -9928,7 +9928,7 @@ "typeString": "contract DSGuard" } }, - "id": 6670, + "id": 6559, "isConstant": false, "isLValue": false, "isPure": false, @@ -9942,7 +9942,7 @@ "typeString": "function () view external returns (bytes32)" } }, - "id": 6671, + "id": 6560, "isConstant": false, "isLValue": false, "isPure": false, @@ -9977,11 +9977,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6652, + "id": 6541, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6642, + "referencedDeclaration": 6531, "src": "1374:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9996,7 +9996,7 @@ "typeString": "address" } ], - "id": 6651, + "id": 6540, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -10007,7 +10007,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6653, + "id": 6542, "isConstant": false, "isLValue": false, "isPure": false, @@ -10021,7 +10021,7 @@ "typeString": "contract DSGuard" } }, - "id": 6654, + "id": 6543, "isConstant": false, "isLValue": false, "isPure": false, @@ -10035,7 +10035,7 @@ "typeString": "function (bytes32,bytes32,bytes32) external" } }, - "id": 6672, + "id": 6561, "isConstant": false, "isLValue": false, "isPure": false, @@ -10049,29 +10049,29 @@ "typeString": "tuple()" } }, - "id": 6673, + "id": 6562, "nodeType": "ExpressionStatement", "src": "1366:131:28" } ] }, "documentation": null, - "id": 6675, + "id": 6564, "implemented": true, "kind": "function", "modifiers": [], "name": "_proxyGuardPermit", "nodeType": "FunctionDefinition", "parameters": { - "id": 6639, + "id": 6528, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6636, + "id": 6525, "name": "proxyAddress", "nodeType": "VariableDeclaration", - "scope": 6675, + "scope": 6564, "src": "1238:28:28", "stateVariable": false, "storageLocation": "default", @@ -10080,7 +10080,7 @@ "typeString": "address payable" }, "typeName": { - "id": 6635, + "id": 6524, "name": "address", "nodeType": "ElementaryTypeName", "src": "1238:15:28", @@ -10095,10 +10095,10 @@ }, { "constant": false, - "id": 6638, + "id": 6527, "name": "src", "nodeType": "VariableDeclaration", - "scope": 6675, + "scope": 6564, "src": "1268:11:28", "stateVariable": false, "storageLocation": "default", @@ -10107,7 +10107,7 @@ "typeString": "address" }, "typeName": { - "id": 6637, + "id": 6526, "name": "address", "nodeType": "ElementaryTypeName", "src": "1268:7:28", @@ -10124,12 +10124,12 @@ "src": "1237:43:28" }, "returnParameters": { - "id": 6640, + "id": 6529, "nodeType": "ParameterList", "parameters": [], "src": "1290:0:28" }, - "scope": 7188, + "scope": 7077, "src": "1211:293:28", "stateMutability": "nonpayable", "superFunction": null, @@ -10137,21 +10137,21 @@ }, { "body": { - "id": 6715, + "id": 6604, "nodeType": "Block", "src": "1589:214:28", "statements": [ { "assignments": [ - 6683 + 6572 ], "declarations": [ { "constant": false, - "id": 6683, + "id": 6572, "name": "g", "nodeType": "VariableDeclaration", - "scope": 6715, + "scope": 6604, "src": "1599:9:28", "stateVariable": false, "storageLocation": "default", @@ -10160,7 +10160,7 @@ "typeString": "address" }, "typeName": { - "id": 6682, + "id": 6571, "name": "address", "nodeType": "ElementaryTypeName", "src": "1599:7:28", @@ -10174,7 +10174,7 @@ "visibility": "internal" } ], - "id": 6691, + "id": 6580, "initialValue": { "argumentTypes": null, "arguments": [ @@ -10188,11 +10188,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6686, + "id": 6575, "name": "proxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6677, + "referencedDeclaration": 6566, "src": "1628:12:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -10207,18 +10207,18 @@ "typeString": "address payable" } ], - "id": 6685, + "id": 6574, "name": "DACProxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7322, + "referencedDeclaration": 7244, "src": "1619:8:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DACProxy_$7322_$", + "typeIdentifier": "t_type$_t_contract$_DACProxy_$7244_$", "typeString": "type(contract DACProxy)" } }, - "id": 6687, + "id": 6576, "isConstant": false, "isLValue": false, "isPure": false, @@ -10228,11 +10228,11 @@ "nodeType": "FunctionCall", "src": "1619:22:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_DACProxy_$7322", + "typeIdentifier": "t_contract$_DACProxy_$7244", "typeString": "contract DACProxy" } }, - "id": 6688, + "id": 6577, "isConstant": false, "isLValue": false, "isPure": false, @@ -10246,7 +10246,7 @@ "typeString": "function () view external returns (contract DSAuthority)" } }, - "id": 6689, + "id": 6578, "isConstant": false, "isLValue": false, "isPure": false, @@ -10268,7 +10268,7 @@ "typeString": "contract DSAuthority" } ], - "id": 6684, + "id": 6573, "isConstant": false, "isLValue": false, "isPure": true, @@ -10281,7 +10281,7 @@ }, "typeName": "address" }, - "id": 6690, + "id": 6579, "isConstant": false, "isLValue": false, "isPure": false, @@ -10313,11 +10313,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6699, + "id": 6588, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6679, + "referencedDeclaration": 6568, "src": "1720:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10332,7 +10332,7 @@ "typeString": "address" } ], - "id": 6698, + "id": 6587, "isConstant": false, "isLValue": false, "isPure": true, @@ -10345,7 +10345,7 @@ }, "typeName": "address" }, - "id": 6700, + "id": 6589, "isConstant": false, "isLValue": false, "isPure": false, @@ -10367,7 +10367,7 @@ "typeString": "address" } ], - "id": 6697, + "id": 6586, "isConstant": false, "isLValue": false, "isPure": true, @@ -10380,7 +10380,7 @@ }, "typeName": "bytes20" }, - "id": 6701, + "id": 6590, "isConstant": false, "isLValue": false, "isPure": false, @@ -10402,7 +10402,7 @@ "typeString": "bytes20" } ], - "id": 6696, + "id": 6585, "isConstant": false, "isLValue": false, "isPure": true, @@ -10415,7 +10415,7 @@ }, "typeName": "bytes32" }, - "id": 6702, + "id": 6591, "isConstant": false, "isLValue": false, "isPure": false, @@ -10439,11 +10439,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6704, + "id": 6593, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6683, + "referencedDeclaration": 6572, "src": "1748:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10458,7 +10458,7 @@ "typeString": "address" } ], - "id": 6703, + "id": 6592, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -10469,7 +10469,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6705, + "id": 6594, "isConstant": false, "isLValue": false, "isPure": false, @@ -10483,7 +10483,7 @@ "typeString": "contract DSGuard" } }, - "id": 6706, + "id": 6595, "isConstant": false, "isLValue": false, "isPure": false, @@ -10497,7 +10497,7 @@ "typeString": "function () view external returns (bytes32)" } }, - "id": 6707, + "id": 6596, "isConstant": false, "isLValue": false, "isPure": false, @@ -10521,11 +10521,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6709, + "id": 6598, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6683, + "referencedDeclaration": 6572, "src": "1778:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10540,7 +10540,7 @@ "typeString": "address" } ], - "id": 6708, + "id": 6597, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -10551,7 +10551,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6710, + "id": 6599, "isConstant": false, "isLValue": false, "isPure": false, @@ -10565,7 +10565,7 @@ "typeString": "contract DSGuard" } }, - "id": 6711, + "id": 6600, "isConstant": false, "isLValue": false, "isPure": false, @@ -10579,7 +10579,7 @@ "typeString": "function () view external returns (bytes32)" } }, - "id": 6712, + "id": 6601, "isConstant": false, "isLValue": false, "isPure": false, @@ -10614,11 +10614,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6693, + "id": 6582, "name": "g", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6683, + "referencedDeclaration": 6572, "src": "1673:1:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10633,7 +10633,7 @@ "typeString": "address" } ], - "id": 6692, + "id": 6581, "name": "DSGuard", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -10644,7 +10644,7 @@ "typeString": "type(contract DSGuard)" } }, - "id": 6694, + "id": 6583, "isConstant": false, "isLValue": false, "isPure": false, @@ -10658,7 +10658,7 @@ "typeString": "contract DSGuard" } }, - "id": 6695, + "id": 6584, "isConstant": false, "isLValue": false, "isPure": false, @@ -10672,7 +10672,7 @@ "typeString": "function (bytes32,bytes32,bytes32) external" } }, - "id": 6713, + "id": 6602, "isConstant": false, "isLValue": false, "isPure": false, @@ -10686,29 +10686,29 @@ "typeString": "tuple()" } }, - "id": 6714, + "id": 6603, "nodeType": "ExpressionStatement", "src": "1665:131:28" } ] }, "documentation": null, - "id": 6716, + "id": 6605, "implemented": true, "kind": "function", "modifiers": [], "name": "_proxyGuardForbid", "nodeType": "FunctionDefinition", "parameters": { - "id": 6680, + "id": 6569, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6677, + "id": 6566, "name": "proxyAddress", "nodeType": "VariableDeclaration", - "scope": 6716, + "scope": 6605, "src": "1537:28:28", "stateVariable": false, "storageLocation": "default", @@ -10717,7 +10717,7 @@ "typeString": "address payable" }, "typeName": { - "id": 6676, + "id": 6565, "name": "address", "nodeType": "ElementaryTypeName", "src": "1537:15:28", @@ -10732,10 +10732,10 @@ }, { "constant": false, - "id": 6679, + "id": 6568, "name": "src", "nodeType": "VariableDeclaration", - "scope": 6716, + "scope": 6605, "src": "1567:11:28", "stateVariable": false, "storageLocation": "default", @@ -10744,7 +10744,7 @@ "typeString": "address" }, "typeName": { - "id": 6678, + "id": 6567, "name": "address", "nodeType": "ElementaryTypeName", "src": "1567:7:28", @@ -10761,12 +10761,12 @@ "src": "1536:43:28" }, "returnParameters": { - "id": 6681, + "id": 6570, "nodeType": "ParameterList", "parameters": [], "src": "1589:0:28" }, - "scope": 7188, + "scope": 7077, "src": "1510:293:28", "stateMutability": "nonpayable", "superFunction": null, @@ -10774,7 +10774,7 @@ }, { "body": { - "id": 6737, + "id": 6626, "nodeType": "Block", "src": "1891:62:28", "statements": [ @@ -10785,18 +10785,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6735, + "id": 6624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6725, + "id": 6614, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6718, + "referencedDeclaration": 6607, "src": "1908:6:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -10814,7 +10814,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6733, + "id": 6622, "isConstant": false, "isLValue": false, "isPure": false, @@ -10822,7 +10822,7 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 6726, + "id": 6615, "isConstant": false, "isLValue": false, "isPure": true, @@ -10848,7 +10848,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6731, + "id": 6620, "isConstant": false, "isLValue": false, "isPure": false, @@ -10856,7 +10856,7 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3138", - "id": 6727, + "id": 6616, "isConstant": false, "isLValue": false, "isPure": true, @@ -10878,11 +10878,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6729, + "id": 6618, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6720, + "referencedDeclaration": 6609, "src": "1935:8:28", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -10897,7 +10897,7 @@ "typeString": "uint8" } ], - "id": 6728, + "id": 6617, "isConstant": false, "isLValue": false, "isPure": true, @@ -10910,7 +10910,7 @@ }, "typeName": "uint" }, - "id": 6730, + "id": 6619, "isConstant": false, "isLValue": false, "isPure": false, @@ -10931,7 +10931,7 @@ } } ], - "id": 6732, + "id": 6621, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -10951,7 +10951,7 @@ } } ], - "id": 6734, + "id": 6623, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -10970,30 +10970,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 6724, - "id": 6736, + "functionReturnParameters": 6613, + "id": 6625, "nodeType": "Return", "src": "1901:45:28" } ] }, "documentation": null, - "id": 6738, + "id": 6627, "implemented": true, "kind": "function", "modifiers": [], "name": "_convert18ToDecimal", "nodeType": "FunctionDefinition", "parameters": { - "id": 6721, + "id": 6610, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6718, + "id": 6607, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 6738, + "scope": 6627, "src": "1838:11:28", "stateVariable": false, "storageLocation": "default", @@ -11002,7 +11002,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6717, + "id": 6606, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1838:4:28", @@ -11016,10 +11016,10 @@ }, { "constant": false, - "id": 6720, + "id": 6609, "name": "decimals", "nodeType": "VariableDeclaration", - "scope": 6738, + "scope": 6627, "src": "1851:14:28", "stateVariable": false, "storageLocation": "default", @@ -11028,7 +11028,7 @@ "typeString": "uint8" }, "typeName": { - "id": 6719, + "id": 6608, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1851:5:28", @@ -11044,15 +11044,15 @@ "src": "1837:29:28" }, "returnParameters": { - "id": 6724, + "id": 6613, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6723, + "id": 6612, "name": "", "nodeType": "VariableDeclaration", - "scope": 6738, + "scope": 6627, "src": "1885:4:28", "stateVariable": false, "storageLocation": "default", @@ -11061,7 +11061,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6722, + "id": 6611, "name": "uint", "nodeType": "ElementaryTypeName", "src": "1885:4:28", @@ -11076,7 +11076,7 @@ ], "src": "1884:6:28" }, - "scope": 7188, + "scope": 7077, "src": "1809:144:28", "stateMutability": "nonpayable", "superFunction": null, @@ -11084,7 +11084,7 @@ }, { "body": { - "id": 6761, + "id": 6650, "nodeType": "Block", "src": "2043:71:28", "statements": [ @@ -11095,18 +11095,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6759, + "id": 6648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6747, + "id": 6636, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6742, + "referencedDeclaration": 6631, "src": "2060:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11124,7 +11124,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6757, + "id": 6646, "isConstant": false, "isLValue": false, "isPure": false, @@ -11132,7 +11132,7 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3130", - "id": 6748, + "id": 6637, "isConstant": false, "isLValue": false, "isPure": true, @@ -11158,7 +11158,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6755, + "id": 6644, "isConstant": false, "isLValue": false, "isPure": false, @@ -11166,7 +11166,7 @@ "leftExpression": { "argumentTypes": null, "hexValue": "3138", - "id": 6749, + "id": 6638, "isConstant": false, "isLValue": false, "isPure": true, @@ -11193,11 +11193,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6751, + "id": 6640, "name": "gemJoin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6740, + "referencedDeclaration": 6629, "src": "2091:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11212,7 +11212,7 @@ "typeString": "address" } ], - "id": 6750, + "id": 6639, "name": "GemJoinLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -11223,7 +11223,7 @@ "typeString": "type(contract GemJoinLike)" } }, - "id": 6752, + "id": 6641, "isConstant": false, "isLValue": false, "isPure": false, @@ -11237,7 +11237,7 @@ "typeString": "contract GemJoinLike" } }, - "id": 6753, + "id": 6642, "isConstant": false, "isLValue": false, "isPure": false, @@ -11251,7 +11251,7 @@ "typeString": "function () external returns (uint256)" } }, - "id": 6754, + "id": 6643, "isConstant": false, "isLValue": false, "isPure": false, @@ -11272,7 +11272,7 @@ } } ], - "id": 6756, + "id": 6645, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -11292,7 +11292,7 @@ } } ], - "id": 6758, + "id": 6647, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -11311,30 +11311,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 6746, - "id": 6760, + "functionReturnParameters": 6635, + "id": 6649, "nodeType": "Return", "src": "2053:54:28" } ] }, "documentation": null, - "id": 6762, + "id": 6651, "implemented": true, "kind": "function", "modifiers": [], "name": "_convert18ToGemUnits", "nodeType": "FunctionDefinition", "parameters": { - "id": 6743, + "id": 6632, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6740, + "id": 6629, "name": "gemJoin", "nodeType": "VariableDeclaration", - "scope": 6762, + "scope": 6651, "src": "1989:15:28", "stateVariable": false, "storageLocation": "default", @@ -11343,7 +11343,7 @@ "typeString": "address" }, "typeName": { - "id": 6739, + "id": 6628, "name": "address", "nodeType": "ElementaryTypeName", "src": "1989:7:28", @@ -11358,10 +11358,10 @@ }, { "constant": false, - "id": 6742, + "id": 6631, "name": "wad", "nodeType": "VariableDeclaration", - "scope": 6762, + "scope": 6651, "src": "2006:11:28", "stateVariable": false, "storageLocation": "default", @@ -11370,7 +11370,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6741, + "id": 6630, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2006:7:28", @@ -11386,15 +11386,15 @@ "src": "1988:30:28" }, "returnParameters": { - "id": 6746, + "id": 6635, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6745, + "id": 6634, "name": "", "nodeType": "VariableDeclaration", - "scope": 6762, + "scope": 6651, "src": "2037:4:28", "stateVariable": false, "storageLocation": "default", @@ -11403,7 +11403,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6744, + "id": 6633, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2037:4:28", @@ -11418,7 +11418,7 @@ ], "src": "2036:6:28" }, - "scope": 7188, + "scope": 7077, "src": "1959:155:28", "stateMutability": "nonpayable", "superFunction": null, @@ -11426,21 +11426,21 @@ }, { "body": { - "id": 6815, + "id": 6704, "nodeType": "Block", "src": "2238:275:28", "statements": [ { "assignments": [ - 6772 + 6661 ], "declarations": [ { "constant": false, - "id": 6772, + "id": 6661, "name": "vat", "nodeType": "VariableDeclaration", - "scope": 6815, + "scope": 6704, "src": "2248:11:28", "stateVariable": false, "storageLocation": "default", @@ -11449,7 +11449,7 @@ "typeString": "address" }, "typeName": { - "id": 6771, + "id": 6660, "name": "address", "nodeType": "ElementaryTypeName", "src": "2248:7:28", @@ -11463,7 +11463,7 @@ "visibility": "internal" } ], - "id": 6778, + "id": 6667, "initialValue": { "argumentTypes": null, "arguments": [], @@ -11474,11 +11474,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6774, + "id": 6663, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6764, + "referencedDeclaration": 6653, "src": "2274:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11493,7 +11493,7 @@ "typeString": "address" } ], - "id": 6773, + "id": 6662, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -11504,7 +11504,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6775, + "id": 6664, "isConstant": false, "isLValue": false, "isPure": false, @@ -11518,7 +11518,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6776, + "id": 6665, "isConstant": false, "isLValue": false, "isPure": false, @@ -11532,7 +11532,7 @@ "typeString": "function () view external returns (address)" } }, - "id": 6777, + "id": 6666, "isConstant": false, "isLValue": false, "isPure": false, @@ -11551,15 +11551,15 @@ }, { "assignments": [ - 6780 + 6669 ], "declarations": [ { "constant": false, - "id": 6780, + "id": 6669, "name": "urn", "nodeType": "VariableDeclaration", - "scope": 6815, + "scope": 6704, "src": "2298:11:28", "stateVariable": false, "storageLocation": "default", @@ -11568,7 +11568,7 @@ "typeString": "address" }, "typeName": { - "id": 6779, + "id": 6668, "name": "address", "nodeType": "ElementaryTypeName", "src": "2298:7:28", @@ -11582,17 +11582,17 @@ "visibility": "internal" } ], - "id": 6787, + "id": 6676, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6785, + "id": 6674, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6766, + "referencedDeclaration": 6655, "src": "2338:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11612,11 +11612,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6782, + "id": 6671, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6764, + "referencedDeclaration": 6653, "src": "2324:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11631,7 +11631,7 @@ "typeString": "address" } ], - "id": 6781, + "id": 6670, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -11642,7 +11642,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6783, + "id": 6672, "isConstant": false, "isLValue": false, "isPure": false, @@ -11656,7 +11656,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6784, + "id": 6673, "isConstant": false, "isLValue": false, "isPure": false, @@ -11670,7 +11670,7 @@ "typeString": "function (uint256) view external returns (address)" } }, - "id": 6786, + "id": 6675, "isConstant": false, "isLValue": false, "isPure": false, @@ -11689,15 +11689,15 @@ }, { "assignments": [ - 6789 + 6678 ], "declarations": [ { "constant": false, - "id": 6789, + "id": 6678, "name": "ilk", "nodeType": "VariableDeclaration", - "scope": 6815, + "scope": 6704, "src": "2352:11:28", "stateVariable": false, "storageLocation": "default", @@ -11706,7 +11706,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 6788, + "id": 6677, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2352:7:28", @@ -11719,17 +11719,17 @@ "visibility": "internal" } ], - "id": 6796, + "id": 6685, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6794, + "id": 6683, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6766, + "referencedDeclaration": 6655, "src": "2392:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11749,11 +11749,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6791, + "id": 6680, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6764, + "referencedDeclaration": 6653, "src": "2378:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11768,7 +11768,7 @@ "typeString": "address" } ], - "id": 6790, + "id": 6679, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -11779,7 +11779,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6792, + "id": 6681, "isConstant": false, "isLValue": false, "isPure": false, @@ -11793,7 +11793,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6793, + "id": 6682, "isConstant": false, "isLValue": false, "isPure": false, @@ -11807,7 +11807,7 @@ "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 6795, + "id": 6684, "isConstant": false, "isLValue": false, "isPure": false, @@ -11826,15 +11826,15 @@ }, { "assignments": [ - 6798 + 6687 ], "declarations": [ { "constant": false, - "id": 6798, + "id": 6687, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 6815, + "scope": 6704, "src": "2406:13:28", "stateVariable": false, "storageLocation": "default", @@ -11843,7 +11843,7 @@ "typeString": "address" }, "typeName": { - "id": 6797, + "id": 6686, "name": "address", "nodeType": "ElementaryTypeName", "src": "2406:7:28", @@ -11857,17 +11857,17 @@ "visibility": "internal" } ], - "id": 6805, + "id": 6694, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6803, + "id": 6692, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6766, + "referencedDeclaration": 6655, "src": "2448:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11887,11 +11887,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6800, + "id": 6689, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6764, + "referencedDeclaration": 6653, "src": "2434:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11906,7 +11906,7 @@ "typeString": "address" } ], - "id": 6799, + "id": 6688, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -11917,7 +11917,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6801, + "id": 6690, "isConstant": false, "isLValue": false, "isPure": false, @@ -11931,7 +11931,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6802, + "id": 6691, "isConstant": false, "isLValue": false, "isPure": false, @@ -11945,7 +11945,7 @@ "typeString": "function (uint256) view external returns (address)" } }, - "id": 6804, + "id": 6693, "isConstant": false, "isLValue": false, "isPure": false, @@ -11965,18 +11965,18 @@ { "expression": { "argumentTypes": null, - "id": 6813, + "id": 6702, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 6806, + "id": 6695, "name": "debt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6769, + "referencedDeclaration": 6658, "src": "2463:4:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11990,11 +11990,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6808, + "id": 6697, "name": "vat", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6772, + "referencedDeclaration": 6661, "src": "2485:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12003,11 +12003,11 @@ }, { "argumentTypes": null, - "id": 6809, + "id": 6698, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6798, + "referencedDeclaration": 6687, "src": "2490:5:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12016,11 +12016,11 @@ }, { "argumentTypes": null, - "id": 6810, + "id": 6699, "name": "urn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6780, + "referencedDeclaration": 6669, "src": "2497:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12029,11 +12029,11 @@ }, { "argumentTypes": null, - "id": 6811, + "id": 6700, "name": "ilk", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6789, + "referencedDeclaration": 6678, "src": "2502:3:28", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -12060,7 +12060,7 @@ "typeString": "bytes32" } ], - "id": 6807, + "id": 6696, "name": "_getWipeAllWad", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12071,7 +12071,7 @@ "typeString": "function (address,address,address,bytes32) view returns (uint256)" } }, - "id": 6812, + "id": 6701, "isConstant": false, "isLValue": false, "isPure": false, @@ -12091,29 +12091,29 @@ "typeString": "uint256" } }, - "id": 6814, + "id": 6703, "nodeType": "ExpressionStatement", "src": "2463:43:28" } ] }, "documentation": null, - "id": 6816, + "id": 6705, "implemented": true, "kind": "function", "modifiers": [], "name": "getVaultDebt", "nodeType": "FunctionDefinition", "parameters": { - "id": 6767, + "id": 6656, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6764, + "id": 6653, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 6816, + "scope": 6705, "src": "2175:15:28", "stateVariable": false, "storageLocation": "default", @@ -12122,7 +12122,7 @@ "typeString": "address" }, "typeName": { - "id": 6763, + "id": 6652, "name": "address", "nodeType": "ElementaryTypeName", "src": "2175:7:28", @@ -12137,10 +12137,10 @@ }, { "constant": false, - "id": 6766, + "id": 6655, "name": "cdp", "nodeType": "VariableDeclaration", - "scope": 6816, + "scope": 6705, "src": "2192:8:28", "stateVariable": false, "storageLocation": "default", @@ -12149,7 +12149,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6765, + "id": 6654, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2192:4:28", @@ -12165,15 +12165,15 @@ "src": "2174:27:28" }, "returnParameters": { - "id": 6770, + "id": 6659, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6769, + "id": 6658, "name": "debt", "nodeType": "VariableDeclaration", - "scope": 6816, + "scope": 6705, "src": "2223:9:28", "stateVariable": false, "storageLocation": "default", @@ -12182,7 +12182,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6768, + "id": 6657, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2223:4:28", @@ -12197,7 +12197,7 @@ ], "src": "2222:11:28" }, - "scope": 7188, + "scope": 7077, "src": "2153:360:28", "stateMutability": "view", "superFunction": null, @@ -12205,21 +12205,21 @@ }, { "body": { - "id": 6862, + "id": 6751, "nodeType": "Block", "src": "2627:347:28", "statements": [ { "assignments": [ - 6826 + 6715 ], "declarations": [ { "constant": false, - "id": 6826, + "id": 6715, "name": "vat", "nodeType": "VariableDeclaration", - "scope": 6862, + "scope": 6751, "src": "2637:11:28", "stateVariable": false, "storageLocation": "default", @@ -12228,7 +12228,7 @@ "typeString": "address" }, "typeName": { - "id": 6825, + "id": 6714, "name": "address", "nodeType": "ElementaryTypeName", "src": "2637:7:28", @@ -12242,7 +12242,7 @@ "visibility": "internal" } ], - "id": 6832, + "id": 6721, "initialValue": { "argumentTypes": null, "arguments": [], @@ -12253,11 +12253,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6828, + "id": 6717, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6818, + "referencedDeclaration": 6707, "src": "2663:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12272,7 +12272,7 @@ "typeString": "address" } ], - "id": 6827, + "id": 6716, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12283,7 +12283,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6829, + "id": 6718, "isConstant": false, "isLValue": false, "isPure": false, @@ -12297,7 +12297,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6830, + "id": 6719, "isConstant": false, "isLValue": false, "isPure": false, @@ -12311,7 +12311,7 @@ "typeString": "function () view external returns (address)" } }, - "id": 6831, + "id": 6720, "isConstant": false, "isLValue": false, "isPure": false, @@ -12330,15 +12330,15 @@ }, { "assignments": [ - 6834 + 6723 ], "declarations": [ { "constant": false, - "id": 6834, + "id": 6723, "name": "urn", "nodeType": "VariableDeclaration", - "scope": 6862, + "scope": 6751, "src": "2687:11:28", "stateVariable": false, "storageLocation": "default", @@ -12347,7 +12347,7 @@ "typeString": "address" }, "typeName": { - "id": 6833, + "id": 6722, "name": "address", "nodeType": "ElementaryTypeName", "src": "2687:7:28", @@ -12361,17 +12361,17 @@ "visibility": "internal" } ], - "id": 6841, + "id": 6730, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6839, + "id": 6728, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6820, + "referencedDeclaration": 6709, "src": "2727:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12391,11 +12391,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6836, + "id": 6725, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6818, + "referencedDeclaration": 6707, "src": "2713:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12410,7 +12410,7 @@ "typeString": "address" } ], - "id": 6835, + "id": 6724, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12421,7 +12421,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6837, + "id": 6726, "isConstant": false, "isLValue": false, "isPure": false, @@ -12435,7 +12435,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6838, + "id": 6727, "isConstant": false, "isLValue": false, "isPure": false, @@ -12449,7 +12449,7 @@ "typeString": "function (uint256) view external returns (address)" } }, - "id": 6840, + "id": 6729, "isConstant": false, "isLValue": false, "isPure": false, @@ -12468,15 +12468,15 @@ }, { "assignments": [ - 6843 + 6732 ], "declarations": [ { "constant": false, - "id": 6843, + "id": 6732, "name": "ilk", "nodeType": "VariableDeclaration", - "scope": 6862, + "scope": 6751, "src": "2741:11:28", "stateVariable": false, "storageLocation": "default", @@ -12485,7 +12485,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 6842, + "id": 6731, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2741:7:28", @@ -12498,17 +12498,17 @@ "visibility": "internal" } ], - "id": 6850, + "id": 6739, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6848, + "id": 6737, "name": "cdp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6820, + "referencedDeclaration": 6709, "src": "2781:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12528,11 +12528,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6845, + "id": 6734, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6818, + "referencedDeclaration": 6707, "src": "2767:7:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12547,7 +12547,7 @@ "typeString": "address" } ], - "id": 6844, + "id": 6733, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12558,7 +12558,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6846, + "id": 6735, "isConstant": false, "isLValue": false, "isPure": false, @@ -12572,7 +12572,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6847, + "id": 6736, "isConstant": false, "isLValue": false, "isPure": false, @@ -12586,7 +12586,7 @@ "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 6849, + "id": 6738, "isConstant": false, "isLValue": false, "isPure": false, @@ -12606,7 +12606,7 @@ { "expression": { "argumentTypes": null, - "id": 6860, + "id": 6749, "isConstant": false, "isLValue": false, "isPure": false, @@ -12616,11 +12616,11 @@ "components": [ { "argumentTypes": null, - "id": 6851, + "id": 6740, "name": "ink", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6823, + "referencedDeclaration": 6712, "src": "2932:3:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12629,7 +12629,7 @@ }, null ], - "id": 6852, + "id": 6741, "isConstant": false, "isInlineArray": false, "isLValue": true, @@ -12649,11 +12649,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6857, + "id": 6746, "name": "ilk", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6843, + "referencedDeclaration": 6732, "src": "2958:3:28", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -12662,11 +12662,11 @@ }, { "argumentTypes": null, - "id": 6858, + "id": 6747, "name": "urn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6834, + "referencedDeclaration": 6723, "src": "2963:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12690,11 +12690,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6854, + "id": 6743, "name": "vat", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6826, + "referencedDeclaration": 6715, "src": "2948:3:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -12709,7 +12709,7 @@ "typeString": "address" } ], - "id": 6853, + "id": 6742, "name": "VatLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -12720,7 +12720,7 @@ "typeString": "type(contract VatLike)" } }, - "id": 6855, + "id": 6744, "isConstant": false, "isLValue": false, "isPure": false, @@ -12734,7 +12734,7 @@ "typeString": "contract VatLike" } }, - "id": 6856, + "id": 6745, "isConstant": false, "isLValue": false, "isPure": false, @@ -12748,7 +12748,7 @@ "typeString": "function (bytes32,address) view external returns (uint256,uint256)" } }, - "id": 6859, + "id": 6748, "isConstant": false, "isLValue": false, "isPure": false, @@ -12768,29 +12768,29 @@ "typeString": "tuple()" } }, - "id": 6861, + "id": 6750, "nodeType": "ExpressionStatement", "src": "2931:36:28" } ] }, "documentation": null, - "id": 6863, + "id": 6752, "implemented": true, "kind": "function", "modifiers": [], "name": "getVaultCollateral", "nodeType": "FunctionDefinition", "parameters": { - "id": 6821, + "id": 6710, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6818, + "id": 6707, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 6863, + "scope": 6752, "src": "2556:15:28", "stateVariable": false, "storageLocation": "default", @@ -12799,7 +12799,7 @@ "typeString": "address" }, "typeName": { - "id": 6817, + "id": 6706, "name": "address", "nodeType": "ElementaryTypeName", "src": "2556:7:28", @@ -12814,10 +12814,10 @@ }, { "constant": false, - "id": 6820, + "id": 6709, "name": "cdp", "nodeType": "VariableDeclaration", - "scope": 6863, + "scope": 6752, "src": "2581:8:28", "stateVariable": false, "storageLocation": "default", @@ -12826,7 +12826,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6819, + "id": 6708, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2581:4:28", @@ -12842,15 +12842,15 @@ "src": "2546:49:28" }, "returnParameters": { - "id": 6824, + "id": 6713, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6823, + "id": 6712, "name": "ink", "nodeType": "VariableDeclaration", - "scope": 6863, + "scope": 6752, "src": "2617:8:28", "stateVariable": false, "storageLocation": "default", @@ -12859,7 +12859,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6822, + "id": 6711, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2617:4:28", @@ -12874,7 +12874,7 @@ ], "src": "2616:10:28" }, - "scope": 7188, + "scope": 7077, "src": "2519:455:28", "stateMutability": "view", "superFunction": null, @@ -12882,21 +12882,21 @@ }, { "body": { - "id": 7086, + "id": 6975, "nodeType": "Block", "src": "3217:3000:28", "statements": [ { "assignments": [ - 6875 + 6764 ], "declarations": [ { "constant": false, - "id": 6875, + "id": 6764, "name": "totalDebt", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3259:14:28", "stateVariable": false, "storageLocation": "default", @@ -12905,7 +12905,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6874, + "id": 6763, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3259:4:28", @@ -12918,14 +12918,14 @@ "visibility": "internal" } ], - "id": 6881, + "id": 6770, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6880, + "id": 6769, "isConstant": false, "isLValue": false, "isPure": false, @@ -12936,18 +12936,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6878, + "id": 6767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 6876, + "id": 6765, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6865, + "referencedDeclaration": 6754, "src": "3276:7:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12958,11 +12958,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 6877, + "id": 6766, "name": "_aaveFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6867, + "referencedDeclaration": 6756, "src": "3286:8:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12979,11 +12979,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 6879, + "id": 6768, "name": "_protocolFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6869, + "referencedDeclaration": 6758, "src": "3297:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13001,31 +13001,31 @@ }, { "assignments": [ - 6883 + 6772 ], "declarations": [ { "constant": false, - "id": 6883, + "id": 6772, "name": "imvCalldata", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3348:43:28", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData" }, "typeName": { "contractScope": null, - "id": 6882, + "id": 6771, "name": "ImportMakerVaultCallData", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6634, + "referencedDeclaration": 6523, "src": "3348:24:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_storage_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_storage_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData" } }, @@ -13033,17 +13033,17 @@ "visibility": "internal" } ], - "id": 6890, + "id": 6779, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6886, + "id": 6775, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6871, + "referencedDeclaration": 6760, "src": "3405:5:28", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -13055,19 +13055,19 @@ "components": [ { "argumentTypes": null, - "id": 6887, + "id": 6776, "name": "ImportMakerVaultCallData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6634, + "referencedDeclaration": 6523, "src": "3413:24:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6634_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6523_storage_ptr_$", "typeString": "type(struct DedgeMakerManager.ImportMakerVaultCallData storage pointer)" } } ], - "id": 6888, + "id": 6777, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -13076,7 +13076,7 @@ "nodeType": "TupleExpression", "src": "3412:26:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6634_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6523_storage_ptr_$", "typeString": "type(struct DedgeMakerManager.ImportMakerVaultCallData storage pointer)" } } @@ -13088,24 +13088,24 @@ "typeString": "bytes calldata" }, { - "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6634_storage_ptr_$", + "typeIdentifier": "t_type$_t_struct$_ImportMakerVaultCallData_$6523_storage_ptr_$", "typeString": "type(struct DedgeMakerManager.ImportMakerVaultCallData storage pointer)" } ], "expression": { "argumentTypes": null, - "id": 6884, + "id": 6773, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "3394:3:28", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 6885, + "id": 6774, "isConstant": false, "isLValue": false, "isPure": true, @@ -13119,7 +13119,7 @@ "typeString": "function () pure" } }, - "id": 6889, + "id": 6778, "isConstant": false, "isLValue": false, "isPure": false, @@ -13129,7 +13129,7 @@ "nodeType": "FunctionCall", "src": "3394:45:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, @@ -13138,31 +13138,31 @@ }, { "assignments": [ - 6892 + 6781 ], "declarations": [ { "constant": false, - "id": 6892, + "id": 6781, "name": "addressRegistry", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3483:31:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { "contractScope": null, - "id": 6891, + "id": 6780, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "3483:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -13170,7 +13170,7 @@ "visibility": "internal" } ], - "id": 6897, + "id": 6786, "initialValue": { "argumentTypes": null, "arguments": [ @@ -13178,25 +13178,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6894, + "id": 6783, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "3533:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6895, + "id": 6784, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "addressRegistryAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 6625, + "referencedDeclaration": 6514, "src": "3533:34:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13211,18 +13211,18 @@ "typeString": "address" } ], - "id": 6893, + "id": 6782, "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "3517:15:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, - "id": 6896, + "id": 6785, "isConstant": false, "isLValue": false, "isPure": false, @@ -13232,7 +13232,7 @@ "nodeType": "FunctionCall", "src": "3517:51:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -13241,15 +13241,15 @@ }, { "assignments": [ - 6899 + 6788 ], "declarations": [ { "constant": false, - "id": 6899, + "id": 6788, "name": "cdpManager", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3578:18:28", "stateVariable": false, "storageLocation": "default", @@ -13258,7 +13258,7 @@ "typeString": "address" }, "typeName": { - "id": 6898, + "id": 6787, "name": "address", "nodeType": "ElementaryTypeName", "src": "3578:7:28", @@ -13272,7 +13272,7 @@ "visibility": "internal" } ], - "id": 6903, + "id": 6792, "initialValue": { "argumentTypes": null, "arguments": [], @@ -13280,32 +13280,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6900, + "id": 6789, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "3599:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6901, + "id": 6790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DssCdpManagerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7627, + "referencedDeclaration": 7549, "src": "3599:36:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6902, + "id": 6791, "isConstant": false, "isLValue": false, "isPure": false, @@ -13324,15 +13324,15 @@ }, { "assignments": [ - 6905 + 6794 ], "declarations": [ { "constant": false, - "id": 6905, + "id": 6794, "name": "collateralCTokenAddress", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3647:31:28", "stateVariable": false, "storageLocation": "default", @@ -13341,7 +13341,7 @@ "typeString": "address" }, "typeName": { - "id": 6904, + "id": 6793, "name": "address", "nodeType": "ElementaryTypeName", "src": "3647:7:28", @@ -13355,30 +13355,30 @@ "visibility": "internal" } ], - "id": 6908, + "id": 6797, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6906, + "id": 6795, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "3681:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6907, + "id": 6796, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "collateralCTokenAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 6629, + "referencedDeclaration": 6518, "src": "3681:35:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13390,15 +13390,15 @@ }, { "assignments": [ - 6910 + 6799 ], "declarations": [ { "constant": false, - "id": 6910, + "id": 6799, "name": "collateral18", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3770:17:28", "stateVariable": false, "storageLocation": "default", @@ -13407,7 +13407,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6909, + "id": 6798, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3770:4:28", @@ -13420,17 +13420,17 @@ "visibility": "internal" } ], - "id": 6916, + "id": 6805, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6912, + "id": 6801, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6899, + "referencedDeclaration": 6788, "src": "3809:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13441,25 +13441,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6913, + "id": 6802, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "3821:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6914, + "id": 6803, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "cdpId", "nodeType": "MemberAccess", - "referencedDeclaration": 6627, + "referencedDeclaration": 6516, "src": "3821:17:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13478,18 +13478,18 @@ "typeString": "uint256" } ], - "id": 6911, + "id": 6800, "name": "getVaultCollateral", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6863, + "referencedDeclaration": 6752, "src": "3790:18:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) view returns (uint256)" } }, - "id": 6915, + "id": 6804, "isConstant": false, "isLValue": false, "isPure": false, @@ -13508,15 +13508,15 @@ }, { "assignments": [ - 6920 + 6809 ], "declarations": [ { "constant": false, - "id": 6920, + "id": 6809, "name": "enterMarketsCToken", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "3926:35:28", "stateVariable": false, "storageLocation": "memory", @@ -13526,7 +13526,7 @@ }, "typeName": { "baseType": { - "id": 6918, + "id": 6807, "name": "address", "nodeType": "ElementaryTypeName", "src": "3926:7:28", @@ -13535,7 +13535,7 @@ "typeString": "address" } }, - "id": 6919, + "id": 6808, "length": null, "nodeType": "ArrayTypeName", "src": "3926:9:28", @@ -13548,14 +13548,14 @@ "visibility": "internal" } ], - "id": 6926, + "id": 6815, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "32", - "id": 6924, + "id": 6813, "isConstant": false, "isLValue": false, "isPure": true, @@ -13578,7 +13578,7 @@ "typeString": "int_const 2" } ], - "id": 6923, + "id": 6812, "isConstant": false, "isLValue": false, "isPure": true, @@ -13591,7 +13591,7 @@ }, "typeName": { "baseType": { - "id": 6921, + "id": 6810, "name": "address", "nodeType": "ElementaryTypeName", "src": "3968:7:28", @@ -13601,7 +13601,7 @@ "typeString": "address" } }, - "id": 6922, + "id": 6811, "length": null, "nodeType": "ArrayTypeName", "src": "3968:9:28", @@ -13611,7 +13611,7 @@ } } }, - "id": 6925, + "id": 6814, "isConstant": false, "isLValue": false, "isPure": true, @@ -13631,7 +13631,7 @@ { "expression": { "argumentTypes": null, - "id": 6931, + "id": 6820, "isConstant": false, "isLValue": false, "isPure": false, @@ -13640,22 +13640,22 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 6927, + "id": 6816, "name": "enterMarketsCToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6920, + "referencedDeclaration": 6809, "src": "3990:18:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 6929, + "id": 6818, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6928, + "id": 6817, "isConstant": false, "isLValue": false, "isPure": true, @@ -13685,11 +13685,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 6930, + "id": 6819, "name": "collateralCTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6905, + "referencedDeclaration": 6794, "src": "4014:23:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -13702,14 +13702,14 @@ "typeString": "address" } }, - "id": 6932, + "id": 6821, "nodeType": "ExpressionStatement", "src": "3990:47:28" }, { "expression": { "argumentTypes": null, - "id": 6939, + "id": 6828, "isConstant": false, "isLValue": false, "isPure": false, @@ -13718,22 +13718,22 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 6933, + "id": 6822, "name": "enterMarketsCToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6920, + "referencedDeclaration": 6809, "src": "4047:18:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 6935, + "id": 6824, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 6934, + "id": 6823, "isConstant": false, "isLValue": false, "isPure": true, @@ -13768,32 +13768,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6936, + "id": 6825, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4071:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6937, + "id": 6826, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CDaiAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7594, + "referencedDeclaration": 7516, "src": "4071:27:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6938, + "id": 6827, "isConstant": false, "isLValue": false, "isPure": false, @@ -13813,21 +13813,21 @@ "typeString": "address" } }, - "id": 6940, + "id": 6829, "nodeType": "ExpressionStatement", "src": "4047:53:28" }, { "assignments": [ - 6944 + 6833 ], "declarations": [ { "constant": false, - "id": 6944, + "id": 6833, "name": "enterMarketErrors", "nodeType": "VariableDeclaration", - "scope": 7086, + "scope": 6975, "src": "4111:31:28", "stateVariable": false, "storageLocation": "memory", @@ -13837,7 +13837,7 @@ }, "typeName": { "baseType": { - "id": 6942, + "id": 6831, "name": "uint", "nodeType": "ElementaryTypeName", "src": "4111:4:28", @@ -13846,7 +13846,7 @@ "typeString": "uint256" } }, - "id": 6943, + "id": 6832, "length": null, "nodeType": "ArrayTypeName", "src": "4111:6:28", @@ -13859,17 +13859,17 @@ "visibility": "internal" } ], - "id": 6953, + "id": 6842, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 6951, + "id": 6840, "name": "enterMarketsCToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6920, + "referencedDeclaration": 6809, "src": "4239:18:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -13894,32 +13894,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6946, + "id": 6835, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4171:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6947, + "id": 6836, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CompoundComptrollerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7585, + "referencedDeclaration": 7507, "src": "4171:42:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6948, + "id": 6837, "isConstant": false, "isLValue": false, "isPure": false, @@ -13941,7 +13941,7 @@ "typeString": "address" } ], - "id": 6945, + "id": 6834, "name": "IComptroller", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -13952,7 +13952,7 @@ "typeString": "type(contract IComptroller)" } }, - "id": 6949, + "id": 6838, "isConstant": false, "isLValue": false, "isPure": false, @@ -13966,7 +13966,7 @@ "typeString": "contract IComptroller" } }, - "id": 6950, + "id": 6839, "isConstant": false, "isLValue": false, "isPure": false, @@ -13980,7 +13980,7 @@ "typeString": "function (address[] memory) external returns (uint256[] memory)" } }, - "id": 6952, + "id": 6841, "isConstant": false, "isLValue": false, "isPure": false, @@ -14007,7 +14007,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6959, + "id": 6848, "isConstant": false, "isLValue": false, "isPure": false, @@ -14016,22 +14016,22 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 6955, + "id": 6844, "name": "enterMarketErrors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6944, + "referencedDeclaration": 6833, "src": "4277:17:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 6957, + "id": 6846, "indexExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6956, + "id": 6845, "isConstant": false, "isLValue": false, "isPure": true, @@ -14062,7 +14062,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6958, + "id": 6847, "isConstant": false, "isLValue": false, "isPure": true, @@ -14086,7 +14086,7 @@ { "argumentTypes": null, "hexValue": "6d6b722d656e7465722d67656d2d6661696c6564", - "id": 6960, + "id": 6849, "isConstant": false, "isLValue": false, "isPure": true, @@ -14113,21 +14113,21 @@ "typeString": "literal_string \"mkr-enter-gem-failed\"" } ], - "id": 6954, + "id": 6843, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "4269:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6961, + "id": 6850, "isConstant": false, "isLValue": false, "isPure": false, @@ -14141,7 +14141,7 @@ "typeString": "tuple()" } }, - "id": 6962, + "id": 6851, "nodeType": "ExpressionStatement", "src": "4269:58:28" }, @@ -14155,7 +14155,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 6968, + "id": 6857, "isConstant": false, "isLValue": false, "isPure": false, @@ -14164,22 +14164,22 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 6964, + "id": 6853, "name": "enterMarketErrors", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6944, + "referencedDeclaration": 6833, "src": "4345:17:28", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 6966, + "id": 6855, "indexExpression": { "argumentTypes": null, "hexValue": "31", - "id": 6965, + "id": 6854, "isConstant": false, "isLValue": false, "isPure": true, @@ -14210,7 +14210,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 6967, + "id": 6856, "isConstant": false, "isLValue": false, "isPure": true, @@ -14234,7 +14234,7 @@ { "argumentTypes": null, "hexValue": "6d6b722d656e7465722d6461692d6661696c6564", - "id": 6969, + "id": 6858, "isConstant": false, "isLValue": false, "isPure": true, @@ -14261,21 +14261,21 @@ "typeString": "literal_string \"mkr-enter-dai-failed\"" } ], - "id": 6963, + "id": 6852, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "4337:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 6970, + "id": 6859, "isConstant": false, "isLValue": false, "isPure": false, @@ -14289,7 +14289,7 @@ "typeString": "tuple()" } }, - "id": 6971, + "id": 6860, "nodeType": "ExpressionStatement", "src": "4337:58:28" }, @@ -14300,7 +14300,7 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 6982, + "id": 6871, "isConstant": false, "isLValue": false, "isPure": false, @@ -14312,25 +14312,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6976, + "id": 6865, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "4439:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6977, + "id": 6866, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "cdpId", "nodeType": "MemberAccess", - "referencedDeclaration": 6627, + "referencedDeclaration": 6516, "src": "4439:17:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14350,11 +14350,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6973, + "id": 6862, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6899, + "referencedDeclaration": 6788, "src": "4422:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14369,7 +14369,7 @@ "typeString": "address" } ], - "id": 6972, + "id": 6861, "name": "ManagerLike", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -14380,7 +14380,7 @@ "typeString": "type(contract ManagerLike)" } }, - "id": 6974, + "id": 6863, "isConstant": false, "isLValue": false, "isPure": false, @@ -14394,7 +14394,7 @@ "typeString": "contract ManagerLike" } }, - "id": 6975, + "id": 6864, "isConstant": false, "isLValue": false, "isPure": false, @@ -14408,7 +14408,7 @@ "typeString": "function (uint256) view external returns (bytes32)" } }, - "id": 6978, + "id": 6867, "isConstant": false, "isLValue": false, "isPure": false, @@ -14430,7 +14430,7 @@ { "argumentTypes": null, "hexValue": "4554482d41", - "id": 6980, + "id": 6869, "isConstant": false, "isLValue": false, "isPure": true, @@ -14453,7 +14453,7 @@ "typeString": "literal_string \"ETH-A\"" } ], - "id": 6979, + "id": 6868, "isConstant": false, "isLValue": false, "isPure": true, @@ -14466,7 +14466,7 @@ }, "typeName": "bytes32" }, - "id": 6981, + "id": 6870, "isConstant": false, "isLValue": false, "isPure": true, @@ -14487,7 +14487,7 @@ } }, "falseBody": { - "id": 7084, + "id": 6973, "nodeType": "Block", "src": "5017:1194:28", "statements": [ @@ -14497,11 +14497,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7023, + "id": 6912, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6899, + "referencedDeclaration": 6788, "src": "5090:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14512,25 +14512,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7024, + "id": 6913, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "5118:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 7025, + "id": 6914, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "collateralJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 6631, + "referencedDeclaration": 6520, "src": "5118:33:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14544,32 +14544,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7026, + "id": 6915, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "5169:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7027, + "id": 6916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DaiJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7618, + "referencedDeclaration": 7540, "src": "5169:30:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7028, + "id": 6917, "isConstant": false, "isLValue": false, "isPure": false, @@ -14587,25 +14587,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7029, + "id": 6918, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "5219:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 7030, + "id": 6919, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "cdpId", "nodeType": "MemberAccess", - "referencedDeclaration": 6627, + "referencedDeclaration": 6516, "src": "5219:17:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14619,25 +14619,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7032, + "id": 6921, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "5296:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 7033, + "id": 6922, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "collateralJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 6631, + "referencedDeclaration": 6520, "src": "5296:33:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14646,11 +14646,11 @@ }, { "argumentTypes": null, - "id": 7034, + "id": 6923, "name": "collateral18", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6910, + "referencedDeclaration": 6799, "src": "5351:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14669,18 +14669,18 @@ "typeString": "uint256" } ], - "id": 7031, + "id": 6920, "name": "_convert18ToGemUnits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6762, + "referencedDeclaration": 6651, "src": "5254:20:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) returns (uint256)" } }, - "id": 7035, + "id": 6924, "isConstant": false, "isLValue": false, "isPure": false, @@ -14718,7 +14718,7 @@ "typeString": "uint256" } ], - "id": 7022, + "id": 6911, "name": "wipeAllAndFreeGem", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -14729,7 +14729,7 @@ "typeString": "function (address,address,address,uint256,uint256)" } }, - "id": 7036, + "id": 6925, "isConstant": false, "isLValue": false, "isPure": false, @@ -14743,21 +14743,21 @@ "typeString": "tuple()" } }, - "id": 7037, + "id": 6926, "nodeType": "ExpressionStatement", "src": "5055:340:28" }, { "assignments": [ - 7039 + 6928 ], "declarations": [ { "constant": false, - "id": 7039, + "id": 6928, "name": "collateralFixedDec", "nodeType": "VariableDeclaration", - "scope": 7084, + "scope": 6973, "src": "5471:23:28", "stateVariable": false, "storageLocation": "default", @@ -14766,7 +14766,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7038, + "id": 6927, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5471:4:28", @@ -14779,17 +14779,17 @@ "visibility": "internal" } ], - "id": 7045, + "id": 6934, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7041, + "id": 6930, "name": "collateral18", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6910, + "referencedDeclaration": 6799, "src": "5534:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14800,25 +14800,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7042, + "id": 6931, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "5548:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 7043, + "id": 6932, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "collateralDecimals", "nodeType": "MemberAccess", - "referencedDeclaration": 6633, + "referencedDeclaration": 6522, "src": "5548:30:28", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -14837,18 +14837,18 @@ "typeString": "uint8" } ], - "id": 7040, + "id": 6929, "name": "_convert18ToDecimal", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6738, + "referencedDeclaration": 6627, "src": "5497:19:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint8_$returns$_t_uint256_$", "typeString": "function (uint256,uint8) returns (uint256)" } }, - "id": 7044, + "id": 6933, "isConstant": false, "isLValue": false, "isPure": false, @@ -14871,11 +14871,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7054, + "id": 6943, "name": "collateralCTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6905, + "referencedDeclaration": 6794, "src": "5766:23:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14884,11 +14884,11 @@ }, { "argumentTypes": null, - "id": 7055, + "id": 6944, "name": "collateralFixedDec", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7039, + "referencedDeclaration": 6928, "src": "5791:18:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -14920,11 +14920,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7048, + "id": 6937, "name": "collateralCTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6905, + "referencedDeclaration": 6794, "src": "5702:23:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14939,7 +14939,7 @@ "typeString": "address" } ], - "id": 7047, + "id": 6936, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -14950,7 +14950,7 @@ "typeString": "type(contract ICToken)" } }, - "id": 7049, + "id": 6938, "isConstant": false, "isLValue": false, "isPure": false, @@ -14964,7 +14964,7 @@ "typeString": "contract ICToken" } }, - "id": 7050, + "id": 6939, "isConstant": false, "isLValue": false, "isPure": false, @@ -14978,7 +14978,7 @@ "typeString": "function () view external returns (address)" } }, - "id": 7051, + "id": 6940, "isConstant": false, "isLValue": false, "isPure": false, @@ -15000,7 +15000,7 @@ "typeString": "address" } ], - "id": 7046, + "id": 6935, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -15011,7 +15011,7 @@ "typeString": "type(contract IERC20)" } }, - "id": 7052, + "id": 6941, "isConstant": false, "isLValue": false, "isPure": false, @@ -15025,7 +15025,7 @@ "typeString": "contract IERC20" } }, - "id": 7053, + "id": 6942, "isConstant": false, "isLValue": false, "isPure": false, @@ -15039,7 +15039,7 @@ "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 7056, + "id": 6945, "isConstant": false, "isLValue": false, "isPure": false, @@ -15053,7 +15053,7 @@ "typeString": "bool" } }, - "id": 7057, + "id": 6946, "nodeType": "ExpressionStatement", "src": "5687:123:28" }, @@ -15067,7 +15067,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7066, + "id": 6955, "isConstant": false, "isLValue": false, "isPure": false, @@ -15077,11 +15077,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7063, + "id": 6952, "name": "collateralFixedDec", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7039, + "referencedDeclaration": 6928, "src": "5961:18:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15101,11 +15101,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7060, + "id": 6949, "name": "collateralCTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6905, + "referencedDeclaration": 6794, "src": "5910:23:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15120,7 +15120,7 @@ "typeString": "address" } ], - "id": 7059, + "id": 6948, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -15131,7 +15131,7 @@ "typeString": "type(contract ICToken)" } }, - "id": 7061, + "id": 6950, "isConstant": false, "isLValue": false, "isPure": false, @@ -15145,7 +15145,7 @@ "typeString": "contract ICToken" } }, - "id": 7062, + "id": 6951, "isConstant": false, "isLValue": false, "isPure": false, @@ -15159,7 +15159,7 @@ "typeString": "function (uint256) external returns (uint256)" } }, - "id": 7064, + "id": 6953, "isConstant": false, "isLValue": false, "isPure": false, @@ -15178,7 +15178,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7065, + "id": 6954, "isConstant": false, "isLValue": false, "isPure": true, @@ -15202,7 +15202,7 @@ { "argumentTypes": null, "hexValue": "67656d2d737570706c792d6661696c", - "id": 7067, + "id": 6956, "isConstant": false, "isLValue": false, "isPure": true, @@ -15229,21 +15229,21 @@ "typeString": "literal_string \"gem-supply-fail\"" } ], - "id": 7058, + "id": 6947, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "5877:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7068, + "id": 6957, "isConstant": false, "isLValue": false, "isPure": false, @@ -15257,7 +15257,7 @@ "typeString": "tuple()" } }, - "id": 7069, + "id": 6958, "nodeType": "ExpressionStatement", "src": "5877:174:28" }, @@ -15271,7 +15271,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7080, + "id": 6969, "isConstant": false, "isLValue": false, "isPure": false, @@ -15281,11 +15281,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7077, + "id": 6966, "name": "totalDebt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6875, + "referencedDeclaration": 6764, "src": "6136:9:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15310,32 +15310,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7072, + "id": 6961, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "6098:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7073, + "id": 6962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CDaiAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7594, + "referencedDeclaration": 7516, "src": "6098:27:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7074, + "id": 6963, "isConstant": false, "isLValue": false, "isPure": false, @@ -15357,7 +15357,7 @@ "typeString": "address" } ], - "id": 7071, + "id": 6960, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -15368,7 +15368,7 @@ "typeString": "type(contract ICToken)" } }, - "id": 7075, + "id": 6964, "isConstant": false, "isLValue": false, "isPure": false, @@ -15382,7 +15382,7 @@ "typeString": "contract ICToken" } }, - "id": 7076, + "id": 6965, "isConstant": false, "isLValue": false, "isPure": false, @@ -15396,7 +15396,7 @@ "typeString": "function (uint256) external returns (uint256)" } }, - "id": 7078, + "id": 6967, "isConstant": false, "isLValue": false, "isPure": false, @@ -15415,7 +15415,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7079, + "id": 6968, "isConstant": false, "isLValue": false, "isPure": true, @@ -15439,7 +15439,7 @@ { "argumentTypes": null, "hexValue": "6461692d626f72726f772d6661696c", - "id": 7081, + "id": 6970, "isConstant": false, "isLValue": false, "isPure": true, @@ -15466,21 +15466,21 @@ "typeString": "literal_string \"dai-borrow-fail\"" } ], - "id": 7070, + "id": 6959, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "6065:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7082, + "id": 6971, "isConstant": false, "isLValue": false, "isPure": false, @@ -15494,17 +15494,17 @@ "typeString": "tuple()" } }, - "id": 7083, + "id": 6972, "nodeType": "ExpressionStatement", "src": "6065:135:28" } ] }, - "id": 7085, + "id": 6974, "nodeType": "IfStatement", "src": "4406:1805:28", "trueBody": { - "id": 7021, + "id": 6910, "nodeType": "Block", "src": "4479:532:28", "statements": [ @@ -15514,11 +15514,11 @@ "arguments": [ { "argumentTypes": null, - "id": 6984, + "id": 6873, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6899, + "referencedDeclaration": 6788, "src": "4528:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15532,32 +15532,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6985, + "id": 6874, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4556:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6986, + "id": 6875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "EthJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7609, + "referencedDeclaration": 7531, "src": "4556:30:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6987, + "id": 6876, "isConstant": false, "isLValue": false, "isPure": false, @@ -15578,32 +15578,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6988, + "id": 6877, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4606:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6989, + "id": 6878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DaiJoinAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7618, + "referencedDeclaration": 7540, "src": "4606:30:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6990, + "id": 6879, "isConstant": false, "isLValue": false, "isPure": false, @@ -15621,25 +15621,25 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 6991, + "id": 6880, "name": "imvCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6883, + "referencedDeclaration": 6772, "src": "4656:11:28", "typeDescriptions": { - "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6634_memory_ptr", + "typeIdentifier": "t_struct$_ImportMakerVaultCallData_$6523_memory_ptr", "typeString": "struct DedgeMakerManager.ImportMakerVaultCallData memory" } }, - "id": 6992, + "id": 6881, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "cdpId", "nodeType": "MemberAccess", - "referencedDeclaration": 6627, + "referencedDeclaration": 6516, "src": "4656:17:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15648,11 +15648,11 @@ }, { "argumentTypes": null, - "id": 6993, + "id": 6882, "name": "collateral18", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6910, + "referencedDeclaration": 6799, "src": "4691:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15683,7 +15683,7 @@ "typeString": "uint256" } ], - "id": 6983, + "id": 6872, "name": "wipeAllAndFreeETH", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -15694,7 +15694,7 @@ "typeString": "function (address,address,address,uint256,uint256)" } }, - "id": 6994, + "id": 6883, "isConstant": false, "isLValue": false, "isPure": false, @@ -15708,7 +15708,7 @@ "typeString": "tuple()" } }, - "id": 6995, + "id": 6884, "nodeType": "ExpressionStatement", "src": "4493:224:28" }, @@ -15721,11 +15721,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7003, + "id": 6892, "name": "collateral18", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6910, + "referencedDeclaration": 6799, "src": "4836:12:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15752,32 +15752,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 6997, + "id": 6886, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4792:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 6998, + "id": 6887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CEtherAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7588, + "referencedDeclaration": 7510, "src": "4792:29:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 6999, + "id": 6888, "isConstant": false, "isLValue": false, "isPure": false, @@ -15799,7 +15799,7 @@ "typeString": "address" } ], - "id": 6996, + "id": 6885, "name": "ICEther", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -15810,7 +15810,7 @@ "typeString": "type(contract ICEther)" } }, - "id": 7000, + "id": 6889, "isConstant": false, "isLValue": false, "isPure": false, @@ -15824,7 +15824,7 @@ "typeString": "contract ICEther" } }, - "id": 7001, + "id": 6890, "isConstant": false, "isLValue": false, "isPure": false, @@ -15838,7 +15838,7 @@ "typeString": "function () payable external" } }, - "id": 7002, + "id": 6891, "isConstant": false, "isLValue": false, "isPure": false, @@ -15852,7 +15852,7 @@ "typeString": "function (uint256) pure returns (function () payable external)" } }, - "id": 7004, + "id": 6893, "isConstant": false, "isLValue": false, "isPure": false, @@ -15866,7 +15866,7 @@ "typeString": "function () payable external" } }, - "id": 7005, + "id": 6894, "isConstant": false, "isLValue": false, "isPure": false, @@ -15880,7 +15880,7 @@ "typeString": "tuple()" } }, - "id": 7006, + "id": 6895, "nodeType": "ExpressionStatement", "src": "4784:67:28" }, @@ -15894,7 +15894,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7017, + "id": 6906, "isConstant": false, "isLValue": false, "isPure": false, @@ -15904,11 +15904,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7014, + "id": 6903, "name": "totalDebt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6875, + "referencedDeclaration": 6764, "src": "4936:9:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -15933,32 +15933,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7009, + "id": 6898, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6892, + "referencedDeclaration": 6781, "src": "4898:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7010, + "id": 6899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "CDaiAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7594, + "referencedDeclaration": 7516, "src": "4898:27:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7011, + "id": 6900, "isConstant": false, "isLValue": false, "isPure": false, @@ -15980,7 +15980,7 @@ "typeString": "address" } ], - "id": 7008, + "id": 6897, "name": "ICToken", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -15991,7 +15991,7 @@ "typeString": "type(contract ICToken)" } }, - "id": 7012, + "id": 6901, "isConstant": false, "isLValue": false, "isPure": false, @@ -16005,7 +16005,7 @@ "typeString": "contract ICToken" } }, - "id": 7013, + "id": 6902, "isConstant": false, "isLValue": false, "isPure": false, @@ -16019,7 +16019,7 @@ "typeString": "function (uint256) external returns (uint256)" } }, - "id": 7015, + "id": 6904, "isConstant": false, "isLValue": false, "isPure": false, @@ -16038,7 +16038,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7016, + "id": 6905, "isConstant": false, "isLValue": false, "isPure": true, @@ -16062,7 +16062,7 @@ { "argumentTypes": null, "hexValue": "6461692d626f72726f772d6661696c", - "id": 7018, + "id": 6907, "isConstant": false, "isLValue": false, "isPure": true, @@ -16089,21 +16089,21 @@ "typeString": "literal_string \"dai-borrow-fail\"" } ], - "id": 7007, + "id": 6896, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "4865:7:28", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7019, + "id": 6908, "isConstant": false, "isLValue": false, "isPure": false, @@ -16117,7 +16117,7 @@ "typeString": "tuple()" } }, - "id": 7020, + "id": 6909, "nodeType": "ExpressionStatement", "src": "4865:135:28" } @@ -16127,22 +16127,22 @@ ] }, "documentation": null, - "id": 7087, + "id": 6976, "implemented": true, "kind": "function", "modifiers": [], "name": "importMakerVaultPostLoan", "nodeType": "FunctionDefinition", "parameters": { - "id": 6872, + "id": 6761, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6865, + "id": 6754, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 7087, + "scope": 6976, "src": "3109:12:28", "stateVariable": false, "storageLocation": "default", @@ -16151,7 +16151,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6864, + "id": 6753, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3109:4:28", @@ -16165,10 +16165,10 @@ }, { "constant": false, - "id": 6867, + "id": 6756, "name": "_aaveFee", "nodeType": "VariableDeclaration", - "scope": 7087, + "scope": 6976, "src": "3131:13:28", "stateVariable": false, "storageLocation": "default", @@ -16177,7 +16177,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6866, + "id": 6755, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3131:4:28", @@ -16191,10 +16191,10 @@ }, { "constant": false, - "id": 6869, + "id": 6758, "name": "_protocolFee", "nodeType": "VariableDeclaration", - "scope": 7087, + "scope": 6976, "src": "3154:17:28", "stateVariable": false, "storageLocation": "default", @@ -16203,7 +16203,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6868, + "id": 6757, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3154:4:28", @@ -16217,10 +16217,10 @@ }, { "constant": false, - "id": 6871, + "id": 6760, "name": "_data", "nodeType": "VariableDeclaration", - "scope": 7087, + "scope": 6976, "src": "3181:20:28", "stateVariable": false, "storageLocation": "calldata", @@ -16229,7 +16229,7 @@ "typeString": "bytes" }, "typeName": { - "id": 6870, + "id": 6759, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3181:5:28", @@ -16245,12 +16245,12 @@ "src": "3099:108:28" }, "returnParameters": { - "id": 6873, + "id": 6762, "nodeType": "ParameterList", "parameters": [], "src": "3217:0:28" }, - "scope": 7188, + "scope": 7077, "src": "3066:3151:28", "stateMutability": "nonpayable", "superFunction": null, @@ -16258,37 +16258,37 @@ }, { "body": { - "id": 7186, + "id": 7075, "nodeType": "Block", "src": "7389:1524:28", "statements": [ { "assignments": [ - 7101 + 6990 ], "declarations": [ { "constant": false, - "id": 7101, + "id": 6990, "name": "addressRegistry", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "7431:31:28", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" }, "typeName": { "contractScope": null, - "id": 7100, + "id": 6989, "name": "AddressRegistry", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "7431:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -16296,17 +16296,17 @@ "visibility": "internal" } ], - "id": 7105, + "id": 6994, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7103, + "id": 6992, "name": "addressRegistryAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7093, + "referencedDeclaration": 6982, "src": "7481:22:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16321,18 +16321,18 @@ "typeString": "address" } ], - "id": 7102, + "id": 6991, "name": "AddressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7628, + "referencedDeclaration": 7550, "src": "7465:15:28", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7628_$", + "typeIdentifier": "t_type$_t_contract$_AddressRegistry_$7550_$", "typeString": "type(contract AddressRegistry)" } }, - "id": 7104, + "id": 6993, "isConstant": false, "isLValue": false, "isPure": false, @@ -16342,7 +16342,7 @@ "nodeType": "FunctionCall", "src": "7465:39:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, @@ -16351,15 +16351,15 @@ }, { "assignments": [ - 7107 + 6996 ], "declarations": [ { "constant": false, - "id": 7107, + "id": 6996, "name": "cdpManager", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "7567:18:28", "stateVariable": false, "storageLocation": "default", @@ -16368,7 +16368,7 @@ "typeString": "address" }, "typeName": { - "id": 7106, + "id": 6995, "name": "address", "nodeType": "ElementaryTypeName", "src": "7567:7:28", @@ -16382,7 +16382,7 @@ "visibility": "internal" } ], - "id": 7111, + "id": 7000, "initialValue": { "argumentTypes": null, "arguments": [], @@ -16390,32 +16390,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7108, + "id": 6997, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "7588:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7109, + "id": 6998, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DssCdpManagerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7627, + "referencedDeclaration": 7549, "src": "7588:36:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7110, + "id": 6999, "isConstant": false, "isLValue": false, "isPure": false, @@ -16434,15 +16434,15 @@ }, { "assignments": [ - 7113 + 7002 ], "declarations": [ { "constant": false, - "id": 7113, + "id": 7002, "name": "daiDebt", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "7657:12:28", "stateVariable": false, "storageLocation": "default", @@ -16451,7 +16451,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7112, + "id": 7001, "name": "uint", "nodeType": "ElementaryTypeName", "src": "7657:4:28", @@ -16464,17 +16464,17 @@ "visibility": "internal" } ], - "id": 7118, + "id": 7007, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 7115, + "id": 7004, "name": "cdpManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7107, + "referencedDeclaration": 6996, "src": "7685:10:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16483,11 +16483,11 @@ }, { "argumentTypes": null, - "id": 7116, + "id": 7005, "name": "cdpId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7095, + "referencedDeclaration": 6984, "src": "7697:5:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16506,18 +16506,18 @@ "typeString": "uint256" } ], - "id": 7114, + "id": 7003, "name": "getVaultDebt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6816, + "referencedDeclaration": 6705, "src": "7672:12:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) view returns (uint256)" } }, - "id": 7117, + "id": 7006, "isConstant": false, "isLValue": false, "isPure": false, @@ -16536,15 +16536,15 @@ }, { "assignments": [ - 7120 + 7009 ], "declarations": [ { "constant": false, - "id": 7120, + "id": 7009, "name": "addressAndExecuteOperationCalldataParams", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "7854:53:28", "stateVariable": false, "storageLocation": "memory", @@ -16553,7 +16553,7 @@ "typeString": "bytes" }, "typeName": { - "id": 7119, + "id": 7008, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7854:5:28", @@ -16566,7 +16566,7 @@ "visibility": "internal" } ], - "id": 7129, + "id": 7018, "initialValue": { "argumentTypes": null, "arguments": [ @@ -16575,11 +16575,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7125, + "id": 7014, "name": "dedgeMakerManagerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7089, + "referencedDeclaration": 6978, "src": "7951:24:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16596,18 +16596,18 @@ ], "expression": { "argumentTypes": null, - "id": 7123, + "id": 7012, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "7940:3:28", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7124, + "id": 7013, "isConstant": false, "isLValue": false, "isPure": true, @@ -16621,7 +16621,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 7126, + "id": 7015, "isConstant": false, "isLValue": false, "isPure": false, @@ -16637,11 +16637,11 @@ }, { "argumentTypes": null, - "id": 7127, + "id": 7016, "name": "executeOperationCalldataParams", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7097, + "referencedDeclaration": 6986, "src": "7990:30:28", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", @@ -16662,18 +16662,18 @@ ], "expression": { "argumentTypes": null, - "id": 7121, + "id": 7010, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "7910:3:28", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 7122, + "id": 7011, "isConstant": false, "isLValue": false, "isPure": true, @@ -16687,7 +16687,7 @@ "typeString": "function () pure returns (bytes memory)" } }, - "id": 7128, + "id": 7017, "isConstant": false, "isLValue": false, "isPure": false, @@ -16706,15 +16706,15 @@ }, { "assignments": [ - 7131 + 7020 ], "declarations": [ { "constant": false, - "id": 7131, + "id": 7020, "name": "lendingPool", "nodeType": "VariableDeclaration", - "scope": 7186, + "scope": 7075, "src": "8085:24:28", "stateVariable": false, "storageLocation": "default", @@ -16724,7 +16724,7 @@ }, "typeName": { "contractScope": null, - "id": 7130, + "id": 7019, "name": "ILendingPool", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 546, @@ -16738,7 +16738,7 @@ "visibility": "internal" } ], - "id": 7141, + "id": 7030, "initialValue": { "argumentTypes": null, "arguments": [ @@ -16757,32 +16757,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7134, + "id": 7023, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "8185:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7135, + "id": 7024, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "AaveLendingPoolAddressProviderAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7573, + "referencedDeclaration": 7495, "src": "8185:53:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7136, + "id": 7025, "isConstant": false, "isLValue": false, "isPure": false, @@ -16804,7 +16804,7 @@ "typeString": "address" } ], - "id": 7133, + "id": 7022, "name": "ILendingPoolAddressesProvider", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -16815,7 +16815,7 @@ "typeString": "type(contract ILendingPoolAddressesProvider)" } }, - "id": 7137, + "id": 7026, "isConstant": false, "isLValue": false, "isPure": false, @@ -16829,7 +16829,7 @@ "typeString": "contract ILendingPoolAddressesProvider" } }, - "id": 7138, + "id": 7027, "isConstant": false, "isLValue": false, "isPure": false, @@ -16843,7 +16843,7 @@ "typeString": "function () view external returns (address)" } }, - "id": 7139, + "id": 7028, "isConstant": false, "isLValue": false, "isPure": false, @@ -16865,7 +16865,7 @@ "typeString": "address" } ], - "id": 7132, + "id": 7021, "name": "ILendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -16876,7 +16876,7 @@ "typeString": "type(contract ILendingPool)" } }, - "id": 7140, + "id": 7029, "isConstant": false, "isLValue": false, "isPure": false, @@ -16904,32 +16904,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7143, + "id": 7032, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "8301:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7144, + "id": 7033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DssCdpManagerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7627, + "referencedDeclaration": 7549, "src": "8301:36:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7145, + "id": 7034, "isConstant": false, "isLValue": false, "isPure": false, @@ -16945,11 +16945,11 @@ }, { "argumentTypes": null, - "id": 7146, + "id": 7035, "name": "cdpId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7095, + "referencedDeclaration": 6984, "src": "8341:5:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -16958,11 +16958,11 @@ }, { "argumentTypes": null, - "id": 7147, + "id": 7036, "name": "dedgeMakerManagerAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7089, + "referencedDeclaration": 6978, "src": "8348:24:28", "typeDescriptions": { "typeIdentifier": "t_address", @@ -16972,7 +16972,7 @@ { "argumentTypes": null, "hexValue": "31", - "id": 7148, + "id": 7037, "isConstant": false, "isLValue": false, "isPure": true, @@ -17007,7 +17007,7 @@ "typeString": "int_const 1" } ], - "id": 7142, + "id": 7031, "name": "cdpAllow", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -17018,7 +17018,7 @@ "typeString": "function (address,uint256,address,uint256)" } }, - "id": 7149, + "id": 7038, "isConstant": false, "isLValue": false, "isPure": false, @@ -17032,7 +17032,7 @@ "typeString": "tuple()" } }, - "id": 7150, + "id": 7039, "nodeType": "ExpressionStatement", "src": "8292:84:28" }, @@ -17042,11 +17042,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7152, + "id": 7041, "name": "dacProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7091, + "referencedDeclaration": 6980, "src": "8404:15:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -17058,11 +17058,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7154, + "id": 7043, "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7131, + "referencedDeclaration": 7020, "src": "8429:11:28", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", @@ -17077,7 +17077,7 @@ "typeString": "contract ILendingPool" } ], - "id": 7153, + "id": 7042, "isConstant": false, "isLValue": false, "isPure": true, @@ -17090,7 +17090,7 @@ }, "typeName": "address" }, - "id": 7155, + "id": 7044, "isConstant": false, "isLValue": false, "isPure": false, @@ -17116,18 +17116,18 @@ "typeString": "address" } ], - "id": 7151, + "id": 7040, "name": "_proxyGuardPermit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6675, + "referencedDeclaration": 6564, "src": "8386:17:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", "typeString": "function (address payable,address)" } }, - "id": 7156, + "id": 7045, "isConstant": false, "isLValue": false, "isPure": false, @@ -17141,7 +17141,7 @@ "typeString": "tuple()" } }, - "id": 7157, + "id": 7046, "nodeType": "ExpressionStatement", "src": "8386:56:28" }, @@ -17151,11 +17151,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7161, + "id": 7050, "name": "dacProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7091, + "referencedDeclaration": 6980, "src": "8488:15:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -17169,32 +17169,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7162, + "id": 7051, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "8517:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7163, + "id": 7052, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DaiAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7600, + "referencedDeclaration": 7522, "src": "8517:26:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7164, + "id": 7053, "isConstant": false, "isLValue": false, "isPure": false, @@ -17210,11 +17210,11 @@ }, { "argumentTypes": null, - "id": 7165, + "id": 7054, "name": "daiDebt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7113, + "referencedDeclaration": 7002, "src": "8559:7:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17223,11 +17223,11 @@ }, { "argumentTypes": null, - "id": 7166, + "id": 7055, "name": "addressAndExecuteOperationCalldataParams", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7120, + "referencedDeclaration": 7009, "src": "8580:40:28", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -17256,18 +17256,18 @@ ], "expression": { "argumentTypes": null, - "id": 7158, + "id": 7047, "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7131, + "referencedDeclaration": 7020, "src": "8453:11:28", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", "typeString": "contract ILendingPool" } }, - "id": 7160, + "id": 7049, "isConstant": false, "isLValue": false, "isPure": false, @@ -17281,7 +17281,7 @@ "typeString": "function (address,address,uint256,bytes memory) external" } }, - "id": 7167, + "id": 7056, "isConstant": false, "isLValue": false, "isPure": false, @@ -17295,7 +17295,7 @@ "typeString": "tuple()" } }, - "id": 7168, + "id": 7057, "nodeType": "ExpressionStatement", "src": "8453:177:28" }, @@ -17310,32 +17310,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 7170, + "id": 7059, "name": "addressRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7101, + "referencedDeclaration": 6990, "src": "8721:15:28", "typeDescriptions": { - "typeIdentifier": "t_contract$_AddressRegistry_$7628", + "typeIdentifier": "t_contract$_AddressRegistry_$7550", "typeString": "contract AddressRegistry" } }, - "id": 7171, + "id": 7060, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DssCdpManagerAddress", "nodeType": "MemberAccess", - "referencedDeclaration": 7627, + "referencedDeclaration": 7549, "src": "8721:36:28", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 7172, + "id": 7061, "isConstant": false, "isLValue": false, "isPure": false, @@ -17351,11 +17351,11 @@ }, { "argumentTypes": null, - "id": 7173, + "id": 7062, "name": "cdpId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7095, + "referencedDeclaration": 6984, "src": "8761:5:28", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17368,7 +17368,7 @@ { "argumentTypes": null, "hexValue": "31", - "id": 7175, + "id": 7064, "isConstant": false, "isLValue": false, "isPure": true, @@ -17391,7 +17391,7 @@ "typeString": "int_const 1" } ], - "id": 7174, + "id": 7063, "isConstant": false, "isLValue": false, "isPure": true, @@ -17404,7 +17404,7 @@ }, "typeName": "address" }, - "id": 7176, + "id": 7065, "isConstant": false, "isLValue": false, "isPure": true, @@ -17434,7 +17434,7 @@ "typeString": "address payable" } ], - "id": 7169, + "id": 7058, "name": "give", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -17445,7 +17445,7 @@ "typeString": "function (address,uint256,address)" } }, - "id": 7177, + "id": 7066, "isConstant": false, "isLValue": false, "isPure": false, @@ -17459,7 +17459,7 @@ "typeString": "tuple()" } }, - "id": 7178, + "id": 7067, "nodeType": "ExpressionStatement", "src": "8716:63:28" }, @@ -17469,11 +17469,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7180, + "id": 7069, "name": "dacProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7091, + "referencedDeclaration": 6980, "src": "8868:15:28", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -17485,11 +17485,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7182, + "id": 7071, "name": "lendingPool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7131, + "referencedDeclaration": 7020, "src": "8893:11:28", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPool_$546", @@ -17504,7 +17504,7 @@ "typeString": "contract ILendingPool" } ], - "id": 7181, + "id": 7070, "isConstant": false, "isLValue": false, "isPure": true, @@ -17517,7 +17517,7 @@ }, "typeName": "address" }, - "id": 7183, + "id": 7072, "isConstant": false, "isLValue": false, "isPure": false, @@ -17543,18 +17543,18 @@ "typeString": "address" } ], - "id": 7179, + "id": 7068, "name": "_proxyGuardForbid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6716, + "referencedDeclaration": 6605, "src": "8850:17:28", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", "typeString": "function (address payable,address)" } }, - "id": 7184, + "id": 7073, "isConstant": false, "isLValue": false, "isPure": false, @@ -17568,29 +17568,29 @@ "typeString": "tuple()" } }, - "id": 7185, + "id": 7074, "nodeType": "ExpressionStatement", "src": "8850:56:28" } ] }, "documentation": null, - "id": 7187, + "id": 7076, "implemented": true, "kind": "function", "modifiers": [], "name": "importMakerVault", "nodeType": "FunctionDefinition", "parameters": { - "id": 7098, + "id": 6987, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7089, + "id": 6978, "name": "dedgeMakerManagerAddress", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7185:32:28", "stateVariable": false, "storageLocation": "default", @@ -17599,7 +17599,7 @@ "typeString": "address" }, "typeName": { - "id": 7088, + "id": 6977, "name": "address", "nodeType": "ElementaryTypeName", "src": "7185:7:28", @@ -17614,10 +17614,10 @@ }, { "constant": false, - "id": 7091, + "id": 6980, "name": "dacProxyAddress", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7227:31:28", "stateVariable": false, "storageLocation": "default", @@ -17626,7 +17626,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7090, + "id": 6979, "name": "address", "nodeType": "ElementaryTypeName", "src": "7227:15:28", @@ -17641,10 +17641,10 @@ }, { "constant": false, - "id": 7093, + "id": 6982, "name": "addressRegistryAddress", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7268:30:28", "stateVariable": false, "storageLocation": "default", @@ -17653,7 +17653,7 @@ "typeString": "address" }, "typeName": { - "id": 7092, + "id": 6981, "name": "address", "nodeType": "ElementaryTypeName", "src": "7268:7:28", @@ -17668,10 +17668,10 @@ }, { "constant": false, - "id": 7095, + "id": 6984, "name": "cdpId", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7308:10:28", "stateVariable": false, "storageLocation": "default", @@ -17680,7 +17680,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7094, + "id": 6983, "name": "uint", "nodeType": "ElementaryTypeName", "src": "7308:4:28", @@ -17694,10 +17694,10 @@ }, { "constant": false, - "id": 7097, + "id": 6986, "name": "executeOperationCalldataParams", "nodeType": "VariableDeclaration", - "scope": 7187, + "scope": 7076, "src": "7328:45:28", "stateVariable": false, "storageLocation": "calldata", @@ -17706,7 +17706,7 @@ "typeString": "bytes" }, "typeName": { - "id": 7096, + "id": 6985, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7328:5:28", @@ -17722,19 +17722,19 @@ "src": "7175:204:28" }, "returnParameters": { - "id": 7099, + "id": 6988, "nodeType": "ParameterList", "parameters": [], "src": "7389:0:28" }, - "scope": 7188, + "scope": 7077, "src": "7150:1763:28", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" } ], - "scope": 7189, + "scope": 7078, "src": "845:8070:28" } ], @@ -17749,11 +17749,11 @@ "events": {}, "links": {}, "address": "0x9561C133DD8580860B6b7E504bC5Aa500f0f06a7", - "transactionHash": "0x7082f103cdb43e9683d0904969f3c3fca5dcd756188543857e3c4e345972751a" + "transactionHash": "0x05b3385789f6b75109d58513aac0cbd9683605c9a443de8f2b0643b435f2b2a8" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:19:27.860Z", + "updatedAt": "2020-04-03T04:49:15.500Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/ICEther.json b/packages/smart-contracts/artifacts/ICEther.json index de3d011..2a56d23 100644 --- a/packages/smart-contracts/artifacts/ICEther.json +++ b/packages/smart-contracts/artifacts/ICEther.json @@ -98,7 +98,7 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { "internalType": "address", @@ -115,7 +115,7 @@ } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { @@ -140,7 +140,7 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { "internalType": "address", @@ -157,7 +157,7 @@ } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { @@ -182,12 +182,12 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":\"ICEther\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0x3c1fd10b8372a9605ad8c50f4412ec551c2a6cd1c766119a38d30b972285ace5\",\"urls\":[\"bzz-raw://6cab8f4140440f85d86faec88351efb196e3c628bc16b0cf808637efe6814e5a\",\"dweb:/ipfs/QmPKFwz4Aw4SoEZ9oXCdwexULcDaLX8HV3f3nEQXbskakU\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":\"ICEther\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", "deployedSourceMap": "", - "source": "pragma solidity 0.5.16;\n\ncontract ICEther {\n function mint() external payable;\n function borrow(uint borrowAmount) external returns (uint);\n function redeem(uint redeemTokens) external returns (uint);\n function redeemUnderlying(uint redeemAmount) external returns (uint);\n function repayBorrow() external payable;\n function repayBorrowBehalf(address borrower) external payable;\n function borrowBalanceCurrent(address account) external view returns (uint);\n function borrowBalanceStored(address account) external view returns (uint256);\n function balanceOfUnderlying(address account) external view returns (uint);\n function balanceOf(address owner) external view returns (uint256);\n}", + "source": "pragma solidity 0.5.16;\n\ncontract ICEther {\n function mint() external payable;\n function borrow(uint borrowAmount) external returns (uint);\n function redeem(uint redeemTokens) external returns (uint);\n function redeemUnderlying(uint redeemAmount) external returns (uint);\n function repayBorrow() external payable;\n function repayBorrowBehalf(address borrower) external payable;\n function borrowBalanceCurrent(address account) external returns (uint);\n function borrowBalanceStored(address account) external view returns (uint256);\n function balanceOfUnderlying(address account) external returns (uint);\n function balanceOf(address owner) external view returns (uint256);\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol", "ast": { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol", @@ -627,7 +627,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 710, - "src": "470:4:7", + "src": "465:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -638,7 +638,7 @@ "id": 707, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "470:4:7", + "src": "465:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -648,11 +648,11 @@ "visibility": "internal" } ], - "src": "469:6:7" + "src": "464:6:7" }, "scope": 732, - "src": "400:76:7", - "stateMutability": "view", + "src": "400:71:7", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, @@ -675,7 +675,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 717, - "src": "510:15:7", + "src": "505:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -686,7 +686,7 @@ "id": 711, "name": "address", "nodeType": "ElementaryTypeName", - "src": "510:7:7", + "src": "505:7:7", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -697,7 +697,7 @@ "visibility": "internal" } ], - "src": "509:17:7" + "src": "504:17:7" }, "returnParameters": { "id": 716, @@ -709,7 +709,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 717, - "src": "550:7:7", + "src": "545:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -720,7 +720,7 @@ "id": 714, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "550:7:7", + "src": "545:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -730,10 +730,10 @@ "visibility": "internal" } ], - "src": "549:9:7" + "src": "544:9:7" }, "scope": 732, - "src": "481:78:7", + "src": "476:78:7", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -757,7 +757,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 724, - "src": "593:15:7", + "src": "588:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -768,7 +768,7 @@ "id": 718, "name": "address", "nodeType": "ElementaryTypeName", - "src": "593:7:7", + "src": "588:7:7", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -779,7 +779,7 @@ "visibility": "internal" } ], - "src": "592:17:7" + "src": "587:17:7" }, "returnParameters": { "id": 723, @@ -791,7 +791,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 724, - "src": "633:4:7", + "src": "623:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -802,7 +802,7 @@ "id": 721, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "633:4:7", + "src": "623:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -812,11 +812,11 @@ "visibility": "internal" } ], - "src": "632:6:7" + "src": "622:6:7" }, "scope": 732, - "src": "564:75:7", - "stateMutability": "view", + "src": "559:70:7", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, @@ -839,7 +839,7 @@ "name": "owner", "nodeType": "VariableDeclaration", "scope": 731, - "src": "663:13:7", + "src": "653:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -850,7 +850,7 @@ "id": 725, "name": "address", "nodeType": "ElementaryTypeName", - "src": "663:7:7", + "src": "653:7:7", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -861,7 +861,7 @@ "visibility": "internal" } ], - "src": "662:15:7" + "src": "652:15:7" }, "returnParameters": { "id": 730, @@ -873,7 +873,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 731, - "src": "701:7:7", + "src": "691:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -884,7 +884,7 @@ "id": 728, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "701:7:7", + "src": "691:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -894,20 +894,20 @@ "visibility": "internal" } ], - "src": "700:9:7" + "src": "690:9:7" }, "scope": 732, - "src": "644:66:7", + "src": "634:66:7", "stateMutability": "view", "superFunction": null, "visibility": "external" } ], "scope": 733, - "src": "25:687:7" + "src": "25:677:7" } ], - "src": "0:712:7" + "src": "0:702:7" }, "legacyAST": { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol", @@ -1347,7 +1347,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 710, - "src": "470:4:7", + "src": "465:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1358,7 +1358,7 @@ "id": 707, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "470:4:7", + "src": "465:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1368,11 +1368,11 @@ "visibility": "internal" } ], - "src": "469:6:7" + "src": "464:6:7" }, "scope": 732, - "src": "400:76:7", - "stateMutability": "view", + "src": "400:71:7", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, @@ -1395,7 +1395,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 717, - "src": "510:15:7", + "src": "505:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1406,7 +1406,7 @@ "id": 711, "name": "address", "nodeType": "ElementaryTypeName", - "src": "510:7:7", + "src": "505:7:7", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1417,7 +1417,7 @@ "visibility": "internal" } ], - "src": "509:17:7" + "src": "504:17:7" }, "returnParameters": { "id": 716, @@ -1429,7 +1429,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 717, - "src": "550:7:7", + "src": "545:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1440,7 +1440,7 @@ "id": 714, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "550:7:7", + "src": "545:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1450,10 +1450,10 @@ "visibility": "internal" } ], - "src": "549:9:7" + "src": "544:9:7" }, "scope": 732, - "src": "481:78:7", + "src": "476:78:7", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -1477,7 +1477,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 724, - "src": "593:15:7", + "src": "588:15:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1488,7 +1488,7 @@ "id": 718, "name": "address", "nodeType": "ElementaryTypeName", - "src": "593:7:7", + "src": "588:7:7", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1499,7 +1499,7 @@ "visibility": "internal" } ], - "src": "592:17:7" + "src": "587:17:7" }, "returnParameters": { "id": 723, @@ -1511,7 +1511,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 724, - "src": "633:4:7", + "src": "623:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1522,7 +1522,7 @@ "id": 721, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "633:4:7", + "src": "623:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1532,11 +1532,11 @@ "visibility": "internal" } ], - "src": "632:6:7" + "src": "622:6:7" }, "scope": 732, - "src": "564:75:7", - "stateMutability": "view", + "src": "559:70:7", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, @@ -1559,7 +1559,7 @@ "name": "owner", "nodeType": "VariableDeclaration", "scope": 731, - "src": "663:13:7", + "src": "653:13:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1570,7 +1570,7 @@ "id": 725, "name": "address", "nodeType": "ElementaryTypeName", - "src": "663:7:7", + "src": "653:7:7", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1581,7 +1581,7 @@ "visibility": "internal" } ], - "src": "662:15:7" + "src": "652:15:7" }, "returnParameters": { "id": 730, @@ -1593,7 +1593,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 731, - "src": "701:7:7", + "src": "691:7:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1604,7 +1604,7 @@ "id": 728, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "701:7:7", + "src": "691:7:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1614,20 +1614,20 @@ "visibility": "internal" } ], - "src": "700:9:7" + "src": "690:9:7" }, "scope": 732, - "src": "644:66:7", + "src": "634:66:7", "stateMutability": "view", "superFunction": null, "visibility": "external" } ], "scope": 733, - "src": "25:687:7" + "src": "25:677:7" } ], - "src": "0:712:7" + "src": "0:702:7" }, "compiler": { "name": "solc", @@ -1635,7 +1635,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.781Z", + "updatedAt": "2020-04-03T03:20:43.681Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/ICToken.json b/packages/smart-contracts/artifacts/ICToken.json index b2b7fa1..f470db6 100644 --- a/packages/smart-contracts/artifacts/ICToken.json +++ b/packages/smart-contracts/artifacts/ICToken.json @@ -148,7 +148,7 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { "internalType": "address", @@ -165,7 +165,7 @@ } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { @@ -190,7 +190,7 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { "internalType": "address", @@ -207,7 +207,7 @@ } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { @@ -365,12 +365,12 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":\"ICToken\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0x1fdd5a3473065d6f14bb74dd57431257d1a6b3d400472fe22e616665fb71d9fa\",\"urls\":[\"bzz-raw://9f75f98e1fcb3b0618bfc4d7e07dfa313250fb3e5012c5101e3e5589b013d6f7\",\"dweb:/ipfs/QmZduo9rqcHV9soppn4eJ9EM3UessLwTpBv3dcx5QWzyzj\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":\"ICToken\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", "deployedSourceMap": "", - "source": "pragma solidity 0.5.16;\n\ninterface ICToken {\n function mint(uint mintAmount) external returns (uint);\n function redeem(uint redeemTokens) external returns (uint);\n function redeemUnderlying(uint redeemAmount) external returns (uint);\n function borrow(uint borrowAmount) external returns (uint);\n function repayBorrow(uint repayAmount) external returns (uint);\n function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint);\n function exchangeRateCurrent() external returns (uint);\n function borrowBalanceCurrent(address account) external view returns (uint);\n function borrowBalanceStored(address account) external view returns (uint256);\n function balanceOfUnderlying(address account) external view returns (uint);\n \n function underlying() external view returns (address);\n function totalSupply() external view returns (uint256);\n function balanceOf(address owner) external view returns (uint256 balance);\n function allowance(address, address) external view returns (uint);\n function approve(address, uint) external;\n function transfer(address, uint) external returns (bool);\n function transferFrom(address, address, uint) external returns (bool);\n}", + "source": "pragma solidity 0.5.16;\n\ninterface ICToken {\n function mint(uint mintAmount) external returns (uint);\n function redeem(uint redeemTokens) external returns (uint);\n function redeemUnderlying(uint redeemAmount) external returns (uint);\n function borrow(uint borrowAmount) external returns (uint);\n function repayBorrow(uint repayAmount) external returns (uint);\n function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint);\n function exchangeRateCurrent() external returns (uint);\n function borrowBalanceCurrent(address account) external returns (uint);\n function borrowBalanceStored(address account) external view returns (uint256);\n function balanceOfUnderlying(address account) external returns (uint);\n \n function underlying() external view returns (address);\n function totalSupply() external view returns (uint256);\n function balanceOf(address owner) external view returns (uint256 balance);\n function allowance(address, address) external view returns (uint);\n function approve(address, uint) external;\n function transfer(address, uint) external returns (bool);\n function transferFrom(address, address, uint) external returns (bool);\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol", "ast": { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol", @@ -1025,7 +1025,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 790, - "src": "601:4:8", + "src": "596:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1036,7 +1036,7 @@ "id": 787, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "601:4:8", + "src": "596:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1046,11 +1046,11 @@ "visibility": "internal" } ], - "src": "600:6:8" + "src": "595:6:8" }, "scope": 858, - "src": "531:76:8", - "stateMutability": "view", + "src": "531:71:8", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, @@ -1073,7 +1073,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 797, - "src": "641:15:8", + "src": "636:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1084,7 +1084,7 @@ "id": 791, "name": "address", "nodeType": "ElementaryTypeName", - "src": "641:7:8", + "src": "636:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1095,7 +1095,7 @@ "visibility": "internal" } ], - "src": "640:17:8" + "src": "635:17:8" }, "returnParameters": { "id": 796, @@ -1107,7 +1107,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 797, - "src": "681:7:8", + "src": "676:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1118,7 +1118,7 @@ "id": 794, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "681:7:8", + "src": "676:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1128,10 +1128,10 @@ "visibility": "internal" } ], - "src": "680:9:8" + "src": "675:9:8" }, "scope": 858, - "src": "612:78:8", + "src": "607:78:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -1155,7 +1155,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 804, - "src": "724:15:8", + "src": "719:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1166,7 +1166,7 @@ "id": 798, "name": "address", "nodeType": "ElementaryTypeName", - "src": "724:7:8", + "src": "719:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1177,7 +1177,7 @@ "visibility": "internal" } ], - "src": "723:17:8" + "src": "718:17:8" }, "returnParameters": { "id": 803, @@ -1189,7 +1189,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 804, - "src": "764:4:8", + "src": "754:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1200,7 +1200,7 @@ "id": 801, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "764:4:8", + "src": "754:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1210,11 +1210,11 @@ "visibility": "internal" } ], - "src": "763:6:8" + "src": "753:6:8" }, "scope": 858, - "src": "695:75:8", - "stateMutability": "view", + "src": "690:70:8", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, @@ -1231,7 +1231,7 @@ "id": 805, "nodeType": "ParameterList", "parameters": [], - "src": "799:2:8" + "src": "789:2:8" }, "returnParameters": { "id": 808, @@ -1243,7 +1243,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 809, - "src": "825:7:8", + "src": "815:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1254,7 +1254,7 @@ "id": 806, "name": "address", "nodeType": "ElementaryTypeName", - "src": "825:7:8", + "src": "815:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1265,10 +1265,10 @@ "visibility": "internal" } ], - "src": "824:9:8" + "src": "814:9:8" }, "scope": 858, - "src": "780:54:8", + "src": "770:54:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -1286,7 +1286,7 @@ "id": 810, "nodeType": "ParameterList", "parameters": [], - "src": "859:2:8" + "src": "849:2:8" }, "returnParameters": { "id": 813, @@ -1298,7 +1298,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 814, - "src": "885:7:8", + "src": "875:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1309,7 +1309,7 @@ "id": 811, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "885:7:8", + "src": "875:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1319,10 +1319,10 @@ "visibility": "internal" } ], - "src": "884:9:8" + "src": "874:9:8" }, "scope": 858, - "src": "839:55:8", + "src": "829:55:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -1346,7 +1346,7 @@ "name": "owner", "nodeType": "VariableDeclaration", "scope": 821, - "src": "918:13:8", + "src": "908:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1357,7 +1357,7 @@ "id": 815, "name": "address", "nodeType": "ElementaryTypeName", - "src": "918:7:8", + "src": "908:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1368,7 +1368,7 @@ "visibility": "internal" } ], - "src": "917:15:8" + "src": "907:15:8" }, "returnParameters": { "id": 820, @@ -1380,7 +1380,7 @@ "name": "balance", "nodeType": "VariableDeclaration", "scope": 821, - "src": "956:15:8", + "src": "946:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1391,7 +1391,7 @@ "id": 818, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "956:7:8", + "src": "946:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1401,10 +1401,10 @@ "visibility": "internal" } ], - "src": "955:17:8" + "src": "945:17:8" }, "scope": 858, - "src": "899:74:8", + "src": "889:74:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -1428,7 +1428,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 830, - "src": "997:7:8", + "src": "987:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1439,7 +1439,7 @@ "id": 822, "name": "address", "nodeType": "ElementaryTypeName", - "src": "997:7:8", + "src": "987:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1455,7 +1455,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 830, - "src": "1006:7:8", + "src": "996:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1466,7 +1466,7 @@ "id": 824, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1006:7:8", + "src": "996:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1477,7 +1477,7 @@ "visibility": "internal" } ], - "src": "996:18:8" + "src": "986:18:8" }, "returnParameters": { "id": 829, @@ -1489,7 +1489,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 830, - "src": "1038:4:8", + "src": "1028:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1500,7 +1500,7 @@ "id": 827, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1038:4:8", + "src": "1028:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1510,10 +1510,10 @@ "visibility": "internal" } ], - "src": "1037:6:8" + "src": "1027:6:8" }, "scope": 858, - "src": "978:66:8", + "src": "968:66:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -1537,7 +1537,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 837, - "src": "1066:7:8", + "src": "1056:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1548,7 +1548,7 @@ "id": 831, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1066:7:8", + "src": "1056:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1564,7 +1564,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 837, - "src": "1075:4:8", + "src": "1065:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1575,7 +1575,7 @@ "id": 833, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1075:4:8", + "src": "1065:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1585,16 +1585,16 @@ "visibility": "internal" } ], - "src": "1065:15:8" + "src": "1055:15:8" }, "returnParameters": { "id": 836, "nodeType": "ParameterList", "parameters": [], - "src": "1089:0:8" + "src": "1079:0:8" }, "scope": 858, - "src": "1049:41:8", + "src": "1039:41:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -1618,7 +1618,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 846, - "src": "1113:7:8", + "src": "1103:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1629,7 +1629,7 @@ "id": 838, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1113:7:8", + "src": "1103:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1645,7 +1645,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 846, - "src": "1122:4:8", + "src": "1112:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1656,7 +1656,7 @@ "id": 840, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1122:4:8", + "src": "1112:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1666,7 +1666,7 @@ "visibility": "internal" } ], - "src": "1112:15:8" + "src": "1102:15:8" }, "returnParameters": { "id": 845, @@ -1678,7 +1678,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 846, - "src": "1146:4:8", + "src": "1136:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1689,7 +1689,7 @@ "id": 843, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1146:4:8", + "src": "1136:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1699,10 +1699,10 @@ "visibility": "internal" } ], - "src": "1145:6:8" + "src": "1135:6:8" }, "scope": 858, - "src": "1095:57:8", + "src": "1085:57:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -1726,7 +1726,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 857, - "src": "1179:7:8", + "src": "1169:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1737,7 +1737,7 @@ "id": 847, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1179:7:8", + "src": "1169:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1753,7 +1753,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 857, - "src": "1188:7:8", + "src": "1178:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1764,7 +1764,7 @@ "id": 849, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1188:7:8", + "src": "1178:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1780,7 +1780,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 857, - "src": "1197:4:8", + "src": "1187:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1791,7 +1791,7 @@ "id": 851, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1197:4:8", + "src": "1187:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1801,7 +1801,7 @@ "visibility": "internal" } ], - "src": "1178:24:8" + "src": "1168:24:8" }, "returnParameters": { "id": 856, @@ -1813,7 +1813,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 857, - "src": "1221:4:8", + "src": "1211:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1824,7 +1824,7 @@ "id": 854, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1221:4:8", + "src": "1211:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1834,20 +1834,20 @@ "visibility": "internal" } ], - "src": "1220:6:8" + "src": "1210:6:8" }, "scope": 858, - "src": "1157:70:8", + "src": "1147:70:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" } ], "scope": 859, - "src": "25:1204:8" + "src": "25:1194:8" } ], - "src": "0:1229:8" + "src": "0:1219:8" }, "legacyAST": { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol", @@ -2502,7 +2502,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 790, - "src": "601:4:8", + "src": "596:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2513,7 +2513,7 @@ "id": 787, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "601:4:8", + "src": "596:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2523,11 +2523,11 @@ "visibility": "internal" } ], - "src": "600:6:8" + "src": "595:6:8" }, "scope": 858, - "src": "531:76:8", - "stateMutability": "view", + "src": "531:71:8", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, @@ -2550,7 +2550,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 797, - "src": "641:15:8", + "src": "636:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2561,7 +2561,7 @@ "id": 791, "name": "address", "nodeType": "ElementaryTypeName", - "src": "641:7:8", + "src": "636:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2572,7 +2572,7 @@ "visibility": "internal" } ], - "src": "640:17:8" + "src": "635:17:8" }, "returnParameters": { "id": 796, @@ -2584,7 +2584,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 797, - "src": "681:7:8", + "src": "676:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2595,7 +2595,7 @@ "id": 794, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "681:7:8", + "src": "676:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2605,10 +2605,10 @@ "visibility": "internal" } ], - "src": "680:9:8" + "src": "675:9:8" }, "scope": 858, - "src": "612:78:8", + "src": "607:78:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -2632,7 +2632,7 @@ "name": "account", "nodeType": "VariableDeclaration", "scope": 804, - "src": "724:15:8", + "src": "719:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2643,7 +2643,7 @@ "id": 798, "name": "address", "nodeType": "ElementaryTypeName", - "src": "724:7:8", + "src": "719:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2654,7 +2654,7 @@ "visibility": "internal" } ], - "src": "723:17:8" + "src": "718:17:8" }, "returnParameters": { "id": 803, @@ -2666,7 +2666,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 804, - "src": "764:4:8", + "src": "754:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2677,7 +2677,7 @@ "id": 801, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "764:4:8", + "src": "754:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2687,11 +2687,11 @@ "visibility": "internal" } ], - "src": "763:6:8" + "src": "753:6:8" }, "scope": 858, - "src": "695:75:8", - "stateMutability": "view", + "src": "690:70:8", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, @@ -2708,7 +2708,7 @@ "id": 805, "nodeType": "ParameterList", "parameters": [], - "src": "799:2:8" + "src": "789:2:8" }, "returnParameters": { "id": 808, @@ -2720,7 +2720,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 809, - "src": "825:7:8", + "src": "815:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2731,7 +2731,7 @@ "id": 806, "name": "address", "nodeType": "ElementaryTypeName", - "src": "825:7:8", + "src": "815:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2742,10 +2742,10 @@ "visibility": "internal" } ], - "src": "824:9:8" + "src": "814:9:8" }, "scope": 858, - "src": "780:54:8", + "src": "770:54:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -2763,7 +2763,7 @@ "id": 810, "nodeType": "ParameterList", "parameters": [], - "src": "859:2:8" + "src": "849:2:8" }, "returnParameters": { "id": 813, @@ -2775,7 +2775,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 814, - "src": "885:7:8", + "src": "875:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2786,7 +2786,7 @@ "id": 811, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "885:7:8", + "src": "875:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2796,10 +2796,10 @@ "visibility": "internal" } ], - "src": "884:9:8" + "src": "874:9:8" }, "scope": 858, - "src": "839:55:8", + "src": "829:55:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -2823,7 +2823,7 @@ "name": "owner", "nodeType": "VariableDeclaration", "scope": 821, - "src": "918:13:8", + "src": "908:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2834,7 +2834,7 @@ "id": 815, "name": "address", "nodeType": "ElementaryTypeName", - "src": "918:7:8", + "src": "908:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2845,7 +2845,7 @@ "visibility": "internal" } ], - "src": "917:15:8" + "src": "907:15:8" }, "returnParameters": { "id": 820, @@ -2857,7 +2857,7 @@ "name": "balance", "nodeType": "VariableDeclaration", "scope": 821, - "src": "956:15:8", + "src": "946:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2868,7 +2868,7 @@ "id": 818, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "956:7:8", + "src": "946:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2878,10 +2878,10 @@ "visibility": "internal" } ], - "src": "955:17:8" + "src": "945:17:8" }, "scope": 858, - "src": "899:74:8", + "src": "889:74:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -2905,7 +2905,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 830, - "src": "997:7:8", + "src": "987:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2916,7 +2916,7 @@ "id": 822, "name": "address", "nodeType": "ElementaryTypeName", - "src": "997:7:8", + "src": "987:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2932,7 +2932,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 830, - "src": "1006:7:8", + "src": "996:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2943,7 +2943,7 @@ "id": 824, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1006:7:8", + "src": "996:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2954,7 +2954,7 @@ "visibility": "internal" } ], - "src": "996:18:8" + "src": "986:18:8" }, "returnParameters": { "id": 829, @@ -2966,7 +2966,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 830, - "src": "1038:4:8", + "src": "1028:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2977,7 +2977,7 @@ "id": 827, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1038:4:8", + "src": "1028:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2987,10 +2987,10 @@ "visibility": "internal" } ], - "src": "1037:6:8" + "src": "1027:6:8" }, "scope": 858, - "src": "978:66:8", + "src": "968:66:8", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -3014,7 +3014,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 837, - "src": "1066:7:8", + "src": "1056:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3025,7 +3025,7 @@ "id": 831, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1066:7:8", + "src": "1056:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3041,7 +3041,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 837, - "src": "1075:4:8", + "src": "1065:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3052,7 +3052,7 @@ "id": 833, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1075:4:8", + "src": "1065:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3062,16 +3062,16 @@ "visibility": "internal" } ], - "src": "1065:15:8" + "src": "1055:15:8" }, "returnParameters": { "id": 836, "nodeType": "ParameterList", "parameters": [], - "src": "1089:0:8" + "src": "1079:0:8" }, "scope": 858, - "src": "1049:41:8", + "src": "1039:41:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -3095,7 +3095,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 846, - "src": "1113:7:8", + "src": "1103:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3106,7 +3106,7 @@ "id": 838, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1113:7:8", + "src": "1103:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3122,7 +3122,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 846, - "src": "1122:4:8", + "src": "1112:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3133,7 +3133,7 @@ "id": 840, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1122:4:8", + "src": "1112:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3143,7 +3143,7 @@ "visibility": "internal" } ], - "src": "1112:15:8" + "src": "1102:15:8" }, "returnParameters": { "id": 845, @@ -3155,7 +3155,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 846, - "src": "1146:4:8", + "src": "1136:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3166,7 +3166,7 @@ "id": 843, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1146:4:8", + "src": "1136:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3176,10 +3176,10 @@ "visibility": "internal" } ], - "src": "1145:6:8" + "src": "1135:6:8" }, "scope": 858, - "src": "1095:57:8", + "src": "1085:57:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -3203,7 +3203,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 857, - "src": "1179:7:8", + "src": "1169:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3214,7 +3214,7 @@ "id": 847, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1179:7:8", + "src": "1169:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3230,7 +3230,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 857, - "src": "1188:7:8", + "src": "1178:7:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3241,7 +3241,7 @@ "id": 849, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1188:7:8", + "src": "1178:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3257,7 +3257,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 857, - "src": "1197:4:8", + "src": "1187:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3268,7 +3268,7 @@ "id": 851, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1197:4:8", + "src": "1187:4:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3278,7 +3278,7 @@ "visibility": "internal" } ], - "src": "1178:24:8" + "src": "1168:24:8" }, "returnParameters": { "id": 856, @@ -3290,7 +3290,7 @@ "name": "", "nodeType": "VariableDeclaration", "scope": 857, - "src": "1221:4:8", + "src": "1211:4:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3301,7 +3301,7 @@ "id": 854, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1221:4:8", + "src": "1211:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3311,20 +3311,20 @@ "visibility": "internal" } ], - "src": "1220:6:8" + "src": "1210:6:8" }, "scope": 858, - "src": "1157:70:8", + "src": "1147:70:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" } ], "scope": 859, - "src": "25:1204:8" + "src": "25:1194:8" } ], - "src": "0:1229:8" + "src": "0:1219:8" }, "compiler": { "name": "solc", @@ -3332,7 +3332,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.782Z", + "updatedAt": "2020-04-03T03:20:43.685Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/Migrations.json b/packages/smart-contracts/artifacts/Migrations.json index 9e6e27e..a447ddc 100644 --- a/packages/smart-contracts/artifacts/Migrations.json +++ b/packages/smart-contracts/artifacts/Migrations.json @@ -895,7 +895,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:19:27.875Z", + "updatedAt": "2020-04-03T04:49:15.508Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/src/proxies/DACProxy.sol b/packages/smart-contracts/src/proxies/DACProxy.sol index c054ca5..c4d000e 100644 --- a/packages/smart-contracts/src/proxies/DACProxy.sol +++ b/packages/smart-contracts/src/proxies/DACProxy.sol @@ -18,7 +18,8 @@ contract DACProxy is BytesLibLite { // TODO: Change this value - address payable constant protocolFeePayoutAddress = 0x56D5e01D5D2F853aA8f4ac5d2FfB4cBBCa9e2b0f; + address payable constant protocolFeePayoutAddress1 = 0x773CCbFB422850617A5680D40B1260422d072f41; + address payable constant protocolFeePayoutAddress2 = 0xAbcCB8f0a3c206Bb0468C52CCc20f3b81077417B; constructor(address _cacheAddr) public { setCache(_cacheAddr); @@ -81,9 +82,11 @@ contract DACProxy is // Repays protocol fee if (_reserve == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) { - protocolFeePayoutAddress.call.value(protocolFee)(""); + protocolFeePayoutAddress1.call.value(protocolFee.div(2))(""); + protocolFeePayoutAddress2.call.value(protocolFee.div(2))(""); } else { - IERC20(_reserve).transfer(protocolFeePayoutAddress, protocolFee); + IERC20(_reserve).transfer(protocolFeePayoutAddress1, protocolFee.div(2)); + IERC20(_reserve).transfer(protocolFeePayoutAddress2, protocolFee.div(2)); } // Repays aave From 24ebdbe0fc0f8fea789b983fd12a6ecd13bd61d3 Mon Sep 17 00:00:00 2001 From: Kendrick Tan Date: Fri, 3 Apr 2020 15:41:25 +1000 Subject: [PATCH 2/4] truffle config --- packages/smart-contracts/package.json | 1 + packages/smart-contracts/truffle-config.js | 40 +++++++++++++++------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/packages/smart-contracts/package.json b/packages/smart-contracts/package.json index 60921d1..d075e7d 100644 --- a/packages/smart-contracts/package.json +++ b/packages/smart-contracts/package.json @@ -5,6 +5,7 @@ "license": "MIT", "dependencies": { "@openzeppelin/contracts": "^2.5.0", + "@truffle/hdwallet-provider": "^1.0.34", "axios": "^0.19.2", "eslint": "^6.8.0", "truffle": "^5.1.17" diff --git a/packages/smart-contracts/truffle-config.js b/packages/smart-contracts/truffle-config.js index 5610dd6..3bdb4d6 100644 --- a/packages/smart-contracts/truffle-config.js +++ b/packages/smart-contracts/truffle-config.js @@ -18,7 +18,7 @@ * */ -// const HDWalletProvider = require('@truffle/hdwallet-provider'); +const HDWalletProvider = require("@truffle/hdwallet-provider"); // const infuraKey = "fj4jll3k....."; // // const fs = require('fs'); @@ -45,11 +45,26 @@ module.exports = { // options below to some value. // development: { - host: "127.0.0.1", // Localhost (default: none) - port: 8545, // Standard Ethereum port (default: none) - network_id: "*", // Any network (default: none) + host: "127.0.0.1", // Localhost (default: none) + port: 8545, // Standard Ethereum port (default: none) + network_id: "*" // Any network (default: none) }, + remote: { + skipDryRun: true, + // Can't be a function otherwise it'll throw a JSON RPC error for some reason + // https://github.com/trufflesuite/truffle/issues/852#issuecomment-522367001 + // Using 0's as private key because it'll throw an error if the private keys + // are undefined as this is instanciating a class.... + provider: new HDWalletProvider( + [process.env.DEPLOYER_PRIVATEKEY || "0".repeat(64)], + process.env.REMOTE_URL || "http://127.0.0.1:8545", + 0, + 1 + ), + network_id: "*" + } + // Another network with more advanced options... // advanced: { // port: 8777, // Custom port @@ -87,15 +102,16 @@ module.exports = { // Configure your compilers compilers: { solc: { - version: "0.5.16", // Fetch exact version from solc-bin (default: truffle's version) + version: "0.5.16", // Fetch exact version from solc-bin (default: truffle's version) // docker: true, // Use "0.5.1" you've installed locally with docker (default: false) - settings: { // See the solidity docs for advice about optimization and evmVersion - optimizer: { - enabled: false, - runs: 200 - }, - evmVersion: "constantinople" + settings: { + // See the solidity docs for advice about optimization and evmVersion + optimizer: { + enabled: false, + runs: 200 + }, + evmVersion: "constantinople" } } } -} +}; From 3ea0e9b073039ea82b064eb839700614de189a78 Mon Sep 17 00:00:00 2001 From: Kendrick Tan Date: Fri, 3 Apr 2020 15:49:39 +1000 Subject: [PATCH 3/4] deployed to mainnet! --- .../artifacts/AddressRegistry.json | 8 +++- .../artifacts/DACProxyFactory.json | 40 ++++++++++++++++++- .../artifacts/DedgeCompoundManager.json | 8 +++- .../artifacts/DedgeExitManager.json | 8 +++- .../artifacts/DedgeGeneralManager.json | 8 +++- .../artifacts/DedgeMakerManager.json | 8 +++- .../artifacts/DeployedAddresses.json | 2 +- .../smart-contracts/artifacts/Migrations.json | 8 +++- 8 files changed, 82 insertions(+), 8 deletions(-) diff --git a/packages/smart-contracts/artifacts/AddressRegistry.json b/packages/smart-contracts/artifacts/AddressRegistry.json index 85d1e10..d0ae99d 100644 --- a/packages/smart-contracts/artifacts/AddressRegistry.json +++ b/packages/smart-contracts/artifacts/AddressRegistry.json @@ -2051,6 +2051,12 @@ "version": "0.5.16+commit.9c3226ce.Emscripten.clang" }, "networks": { + "1": { + "events": {}, + "links": {}, + "address": "0x3BDb8b7d03aB4299250e9B7Ef0C717c8a1fD3913", + "transactionHash": "0x1718e774ccea1f62b5358967600ab3b9af054e7213ac19782bde7b9e1a70f38a" + }, "5777": { "events": {}, "links": {}, @@ -2059,7 +2065,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T04:49:15.507Z", + "updatedAt": "2020-04-03T05:45:42.992Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DACProxyFactory.json b/packages/smart-contracts/artifacts/DACProxyFactory.json index 7bd9779..4d2d07c 100644 --- a/packages/smart-contracts/artifacts/DACProxyFactory.json +++ b/packages/smart-contracts/artifacts/DACProxyFactory.json @@ -6975,6 +6975,44 @@ "version": "0.5.16+commit.9c3226ce.Emscripten.clang" }, "networks": { + "1": { + "events": { + "0x259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "proxy", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "cache", + "type": "address" + } + ], + "name": "Created", + "type": "event" + } + }, + "links": {}, + "address": "0xb06121EA08019dF9F7F3eA76b465067bfA3f7f5F", + "transactionHash": "0x0490e4a52161ef07943fe7bb526689d9d849a61e7b2f479f9e08bc32a1f4826b" + }, "5777": { "events": { "0x259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b": { @@ -7015,7 +7053,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T04:49:15.460Z", + "updatedAt": "2020-04-03T05:45:42.858Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeCompoundManager.json b/packages/smart-contracts/artifacts/DedgeCompoundManager.json index 1d80da7..8dea819 100644 --- a/packages/smart-contracts/artifacts/DedgeCompoundManager.json +++ b/packages/smart-contracts/artifacts/DedgeCompoundManager.json @@ -20398,6 +20398,12 @@ "version": "0.5.16+commit.9c3226ce.Emscripten.clang" }, "networks": { + "1": { + "events": {}, + "links": {}, + "address": "0xd1a3438BbC0EAAE24EC7b94ca471Ebca9c371a8d", + "transactionHash": "0xe5dc2f06f9f68b378000f2f4ab198663468d6d63c82697ea1691b8ca6c0ff42d" + }, "5777": { "events": {}, "links": {}, @@ -20406,7 +20412,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T04:49:15.485Z", + "updatedAt": "2020-04-03T05:45:42.965Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeExitManager.json b/packages/smart-contracts/artifacts/DedgeExitManager.json index fd369d8..ee5dd8c 100644 --- a/packages/smart-contracts/artifacts/DedgeExitManager.json +++ b/packages/smart-contracts/artifacts/DedgeExitManager.json @@ -14900,6 +14900,12 @@ "version": "0.5.16+commit.9c3226ce.Emscripten.clang" }, "networks": { + "1": { + "events": {}, + "links": {}, + "address": "0xd773FAE3d5Efce9d00D9104898c45ef432373906", + "transactionHash": "0xdb680a3018be4dbb25620a93f8f2d43c31f224dfc9854f1670c7d0f489e2aaf0" + }, "5777": { "events": {}, "links": {}, @@ -14908,7 +14914,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T04:49:15.471Z", + "updatedAt": "2020-04-03T05:45:42.935Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeGeneralManager.json b/packages/smart-contracts/artifacts/DedgeGeneralManager.json index 972216e..04d941e 100644 --- a/packages/smart-contracts/artifacts/DedgeGeneralManager.json +++ b/packages/smart-contracts/artifacts/DedgeGeneralManager.json @@ -1548,6 +1548,12 @@ "version": "0.5.16+commit.9c3226ce.Emscripten.clang" }, "networks": { + "1": { + "events": {}, + "links": {}, + "address": "0xa69B107791b8D0dF8c317dD9533260826C11F80C", + "transactionHash": "0xde945e6428b6ee6292e528d6dbc221d537ae20bb4fc820e01d3e7fdbe3463f12" + }, "5777": { "events": {}, "links": {}, @@ -1556,7 +1562,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T04:49:15.464Z", + "updatedAt": "2020-04-03T05:45:42.884Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeMakerManager.json b/packages/smart-contracts/artifacts/DedgeMakerManager.json index 528e767..dfff931 100644 --- a/packages/smart-contracts/artifacts/DedgeMakerManager.json +++ b/packages/smart-contracts/artifacts/DedgeMakerManager.json @@ -17745,6 +17745,12 @@ "version": "0.5.16+commit.9c3226ce.Emscripten.clang" }, "networks": { + "1": { + "events": {}, + "links": {}, + "address": "0x87eF232edDb1619374b30039a07b93aDd8d1f400", + "transactionHash": "0xaf01ac33848d9f8530bfb37d9f45409dc8d66eb0497a2040e65ee8db8edab6d3" + }, "5777": { "events": {}, "links": {}, @@ -17753,7 +17759,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T04:49:15.500Z", + "updatedAt": "2020-04-03T05:45:42.983Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DeployedAddresses.json b/packages/smart-contracts/artifacts/DeployedAddresses.json index 1ae3f24..6c1762e 100644 --- a/packages/smart-contracts/artifacts/DeployedAddresses.json +++ b/packages/smart-contracts/artifacts/DeployedAddresses.json @@ -1 +1 @@ -{"dacProxyFactoryAddress":"0xCfEB869F69431e42cdB54A4F4f105C19C080A601","dedgeCompoundManagerAddress":"0x254dffcd3277C0b1660F6d42EFbB754edaBAbC2B","dedgeMakerManagerAddress":"0x9561C133DD8580860B6b7E504bC5Aa500f0f06a7","dedgeExitManagerAddress":"0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb","dedgeGeneralManagerAddress":"0xC89Ce4735882C9F0f0FE26686c53074E09B0D550","addressRegistryAddress":"0xe982E462b094850F12AF94d21D470e21bE9D0E9C"} \ No newline at end of file +{"dacProxyFactoryAddress":"0xb06121EA08019dF9F7F3eA76b465067bfA3f7f5F","dedgeCompoundManagerAddress":"0xd1a3438BbC0EAAE24EC7b94ca471Ebca9c371a8d","dedgeMakerManagerAddress":"0x87eF232edDb1619374b30039a07b93aDd8d1f400","dedgeExitManagerAddress":"0xd773FAE3d5Efce9d00D9104898c45ef432373906","dedgeGeneralManagerAddress":"0xa69B107791b8D0dF8c317dD9533260826C11F80C","addressRegistryAddress":"0x3BDb8b7d03aB4299250e9B7Ef0C717c8a1fD3913"} \ No newline at end of file diff --git a/packages/smart-contracts/artifacts/Migrations.json b/packages/smart-contracts/artifacts/Migrations.json index a447ddc..70f2215 100644 --- a/packages/smart-contracts/artifacts/Migrations.json +++ b/packages/smart-contracts/artifacts/Migrations.json @@ -887,6 +887,12 @@ "version": "0.5.16+commit.9c3226ce.Emscripten.clang" }, "networks": { + "1": { + "events": {}, + "links": {}, + "address": "0xeA9246727f058547e86EE960c28843C854609738", + "transactionHash": "0x2bc31e7e264e3d4674940cbfd57d7b61d36229de78e28d43aec10a76b31637db" + }, "5777": { "events": {}, "links": {}, @@ -895,7 +901,7 @@ } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T04:49:15.508Z", + "updatedAt": "2020-04-03T05:45:42.993Z", "networkType": "ethereum", "devdoc": { "methods": {} From 491adbe106f54ab87d51671358b03bd4c0a38e86 Mon Sep 17 00:00:00 2001 From: Kendrick Tan Date: Fri, 3 Apr 2020 16:29:30 +1000 Subject: [PATCH 4/4] optimized solidity --- .../smart-contracts/artifacts/Address.json | 464 +++---- .../artifacts/AddressRegistry.json | 350 +++-- .../artifacts/BytesLibLite.json | 44 +- .../smart-contracts/artifacts/Common.json | 62 +- .../artifacts/CompoundBase.json | 194 +-- .../smart-contracts/artifacts/DACProxy.json | 12 +- .../artifacts/DACProxyFactory.json | 54 +- .../smart-contracts/artifacts/DSAuth.json | 48 +- .../artifacts/DSAuthEvents.json | 44 +- .../artifacts/DSAuthority.json | 40 +- .../smart-contracts/artifacts/DSGuard.json | 16 +- .../artifacts/DSGuardEvents.json | 12 +- .../artifacts/DSGuardFactory.json | 14 +- .../smart-contracts/artifacts/DSMath.json | 44 +- .../smart-contracts/artifacts/DSNote.json | 20 +- .../smart-contracts/artifacts/DSProxy.json | 52 +- .../artifacts/DSProxyCache.json | 50 +- .../artifacts/DSProxyFactory.json | 52 +- .../artifacts/DaiJoinLike.json | 56 +- .../artifacts/DedgeCompoundManager.json | 20 +- .../artifacts/DedgeExitManager.json | 20 +- .../artifacts/DedgeGeneralManager.json | 44 +- .../artifacts/DedgeMakerManager.json | 20 +- .../artifacts/DeployedAddresses.json | 2 +- .../artifacts/DssProxyActionsBase.json | 62 +- .../artifacts/FlashLoanReceiverBase.json | 12 +- .../artifacts/GemJoinLike.json | 56 +- .../smart-contracts/artifacts/GemLike.json | 56 +- .../smart-contracts/artifacts/ICEther.json | 4 +- .../smart-contracts/artifacts/ICToken.json | 4 +- .../artifacts/ICompoundPriceOracle.json | 4 +- .../artifacts/IComptroller.json | 4 +- .../artifacts/IDssProxyActions.json | 4 +- .../smart-contracts/artifacts/IERC20.json | 4 +- .../artifacts/IFlashLoanReceiver.json | 4 +- .../artifacts/ILendingPool.json | 4 +- .../ILendingPoolAddressesProvider.json | 4 +- .../ILendingPoolParametersProvider.json | 4 +- .../artifacts/IUniswapExchange.json | 4 +- .../artifacts/IUniswapFactory.json | 4 +- .../smart-contracts/artifacts/JugLike.json | 56 +- .../artifacts/ManagerLike.json | 56 +- .../smart-contracts/artifacts/Migrations.json | 30 +- .../smart-contracts/artifacts/SafeERC20.json | 128 +- .../smart-contracts/artifacts/SafeMath.json | 1204 ++++++++--------- .../artifacts/UniswapBase.json | 22 +- .../artifacts/UniswapLiteBase.json | 16 +- .../smart-contracts/artifacts/VatLike.json | 56 +- packages/smart-contracts/truffle-config.js | 2 +- 49 files changed, 1732 insertions(+), 1806 deletions(-) diff --git a/packages/smart-contracts/artifacts/Address.json b/packages/smart-contracts/artifacts/Address.json index e27273d..fcbfee4 100644 --- a/packages/smart-contracts/artifacts/Address.json +++ b/packages/smart-contracts/artifacts/Address.json @@ -1,9 +1,9 @@ { "contractName": "Address", "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206d90b07536e8d4f16748b5287820ffb0d07d050da5a5e6bb07bb822d8c8037c664736f6c63430005100032", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158206d90b07536e8d4f16748b5287820ffb0d07d050da5a5e6bb07bb822d8c8037c664736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200aa4ebc3bf488923fd937971e1b756a63524893e54d859ee385be73be721c39364736f6c63430005100032", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200aa4ebc3bf488923fd937971e1b756a63524893e54d859ee385be73be721c39364736f6c63430005100032", "sourceMap": "93:2861:33:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24", "deployedSourceMap": "93:2861:33:-;;;;;;;;", "source": "pragma solidity ^0.5.5;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following \n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\n // for accounts without code, i.e. `keccak256('')`\n bytes32 codehash;\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\n // solhint-disable-next-line no-inline-assembly\n assembly { codehash := extcodehash(account) }\n return (codehash != accountHash && codehash != 0x0);\n }\n\n /**\n * @dev Converts an `address` into `address payable`. Note that this is\n * simply a type cast: the actual underlying value is not changed.\n *\n * _Available since v2.4.0._\n */\n function toPayable(address account) internal pure returns (address payable) {\n return address(uint160(account));\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n *\n * _Available since v2.4.0._\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n // solhint-disable-next-line avoid-call-value\n (bool success, ) = recipient.call.value(amount)(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n}\n", @@ -12,14 +12,14 @@ "absolutePath": "@openzeppelin/contracts/utils/Address.sol", "exportedSymbols": { "Address": [ - 7890 + 7812 ] }, - "id": 7891, + "id": 7813, "nodeType": "SourceUnit", "nodes": [ { - "id": 7817, + "id": 7739, "literals": [ "solidity", "^", @@ -35,30 +35,30 @@ "contractKind": "library", "documentation": "@dev Collection of functions related to the address type", "fullyImplemented": true, - "id": 7890, + "id": 7812, "linearizedBaseContracts": [ - 7890 + 7812 ], "name": "Address", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 7841, + "id": 7763, "nodeType": "Block", "src": "752:544:33", "statements": [ { "assignments": [ - 7825 + 7747 ], "declarations": [ { "constant": false, - "id": 7825, + "id": 7747, "name": "codehash", "nodeType": "VariableDeclaration", - "scope": 7841, + "scope": 7763, "src": "1004:16:33", "stateVariable": false, "storageLocation": "default", @@ -67,7 +67,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 7824, + "id": 7746, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1004:7:33", @@ -80,22 +80,22 @@ "visibility": "internal" } ], - "id": 7826, + "id": 7748, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "1004:16:33" }, { "assignments": [ - 7828 + 7750 ], "declarations": [ { "constant": false, - "id": 7828, + "id": 7750, "name": "accountHash", "nodeType": "VariableDeclaration", - "scope": 7841, + "scope": 7763, "src": "1030:19:33", "stateVariable": false, "storageLocation": "default", @@ -104,7 +104,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 7827, + "id": 7749, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1030:7:33", @@ -117,11 +117,11 @@ "visibility": "internal" } ], - "id": 7830, + "id": 7752, "initialValue": { "argumentTypes": null, "hexValue": "307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730", - "id": 7829, + "id": 7751, "isConstant": false, "isLValue": false, "isPure": true, @@ -143,7 +143,7 @@ "externalReferences": [ { "codehash": { - "declaration": 7825, + "declaration": 7747, "isOffset": false, "isSlot": false, "src": "1195:8:33", @@ -152,7 +152,7 @@ }, { "account": { - "declaration": 7819, + "declaration": 7741, "isOffset": false, "isSlot": false, "src": "1219:7:33", @@ -160,7 +160,7 @@ } } ], - "id": 7831, + "id": 7753, "nodeType": "InlineAssembly", "operations": "{\n codehash := extcodehash(account)\n}", "src": "1184:45:33" @@ -175,7 +175,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 7838, + "id": 7760, "isConstant": false, "isLValue": false, "isPure": false, @@ -186,18 +186,18 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 7834, + "id": 7756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7832, + "id": 7754, "name": "codehash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7825, + "referencedDeclaration": 7747, "src": "1246:8:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -208,11 +208,11 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 7833, + "id": 7755, "name": "accountHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7828, + "referencedDeclaration": 7750, "src": "1258:11:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -233,18 +233,18 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 7837, + "id": 7759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7835, + "id": 7757, "name": "codehash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7825, + "referencedDeclaration": 7747, "src": "1273:8:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -256,7 +256,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "307830", - "id": 7836, + "id": 7758, "isConstant": false, "isLValue": false, "isPure": true, @@ -284,7 +284,7 @@ } } ], - "id": 7839, + "id": 7761, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -297,30 +297,30 @@ "typeString": "bool" } }, - "functionReturnParameters": 7823, - "id": 7840, + "functionReturnParameters": 7745, + "id": 7762, "nodeType": "Return", "src": "1238:51:33" } ] }, "documentation": "@dev Returns true if `account` is a contract.\n * [IMPORTANT]\n====\nIt is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.\n * Among others, `isContract` will return false for the following \ntypes of addresses:\n * - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n====", - "id": 7842, + "id": 7764, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nodeType": "FunctionDefinition", "parameters": { - "id": 7820, + "id": 7742, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7819, + "id": 7741, "name": "account", "nodeType": "VariableDeclaration", - "scope": 7842, + "scope": 7764, "src": "706:15:33", "stateVariable": false, "storageLocation": "default", @@ -329,7 +329,7 @@ "typeString": "address" }, "typeName": { - "id": 7818, + "id": 7740, "name": "address", "nodeType": "ElementaryTypeName", "src": "706:7:33", @@ -346,15 +346,15 @@ "src": "705:17:33" }, "returnParameters": { - "id": 7823, + "id": 7745, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7822, + "id": 7744, "name": "", "nodeType": "VariableDeclaration", - "scope": 7842, + "scope": 7764, "src": "746:4:33", "stateVariable": false, "storageLocation": "default", @@ -363,7 +363,7 @@ "typeString": "bool" }, "typeName": { - "id": 7821, + "id": 7743, "name": "bool", "nodeType": "ElementaryTypeName", "src": "746:4:33", @@ -378,7 +378,7 @@ ], "src": "745:6:33" }, - "scope": 7890, + "scope": 7812, "src": "686:610:33", "stateMutability": "view", "superFunction": null, @@ -386,7 +386,7 @@ }, { "body": { - "id": 7855, + "id": 7777, "nodeType": "Block", "src": "1581:49:33", "statements": [ @@ -399,11 +399,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7851, + "id": 7773, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7844, + "referencedDeclaration": 7766, "src": "1614:7:33", "typeDescriptions": { "typeIdentifier": "t_address", @@ -418,7 +418,7 @@ "typeString": "address" } ], - "id": 7850, + "id": 7772, "isConstant": false, "isLValue": false, "isPure": true, @@ -431,7 +431,7 @@ }, "typeName": "uint160" }, - "id": 7852, + "id": 7774, "isConstant": false, "isLValue": false, "isPure": false, @@ -453,7 +453,7 @@ "typeString": "uint160" } ], - "id": 7849, + "id": 7771, "isConstant": false, "isLValue": false, "isPure": true, @@ -466,7 +466,7 @@ }, "typeName": "address" }, - "id": 7853, + "id": 7775, "isConstant": false, "isLValue": false, "isPure": false, @@ -480,30 +480,30 @@ "typeString": "address payable" } }, - "functionReturnParameters": 7848, - "id": 7854, + "functionReturnParameters": 7770, + "id": 7776, "nodeType": "Return", "src": "1591:32:33" } ] }, "documentation": "@dev Converts an `address` into `address payable`. Note that this is\nsimply a type cast: the actual underlying value is not changed.\n * _Available since v2.4.0._", - "id": 7856, + "id": 7778, "implemented": true, "kind": "function", "modifiers": [], "name": "toPayable", "nodeType": "FunctionDefinition", "parameters": { - "id": 7845, + "id": 7767, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7844, + "id": 7766, "name": "account", "nodeType": "VariableDeclaration", - "scope": 7856, + "scope": 7778, "src": "1524:15:33", "stateVariable": false, "storageLocation": "default", @@ -512,7 +512,7 @@ "typeString": "address" }, "typeName": { - "id": 7843, + "id": 7765, "name": "address", "nodeType": "ElementaryTypeName", "src": "1524:7:33", @@ -529,15 +529,15 @@ "src": "1523:17:33" }, "returnParameters": { - "id": 7848, + "id": 7770, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7847, + "id": 7769, "name": "", "nodeType": "VariableDeclaration", - "scope": 7856, + "scope": 7778, "src": "1564:15:33", "stateVariable": false, "storageLocation": "default", @@ -546,7 +546,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7846, + "id": 7768, "name": "address", "nodeType": "ElementaryTypeName", "src": "1564:15:33", @@ -562,7 +562,7 @@ ], "src": "1563:17:33" }, - "scope": 7890, + "scope": 7812, "src": "1505:125:33", "stateMutability": "pure", "superFunction": null, @@ -570,7 +570,7 @@ }, { "body": { - "id": 7888, + "id": 7810, "nodeType": "Block", "src": "2658:294:33", "statements": [ @@ -584,7 +584,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7869, + "id": 7791, "isConstant": false, "isLValue": false, "isPure": false, @@ -596,14 +596,14 @@ "arguments": [ { "argumentTypes": null, - "id": 7865, + "id": 7787, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7925, + "referencedDeclaration": 7847, "src": "2684:4:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$7890", + "typeIdentifier": "t_contract$_Address_$7812", "typeString": "library Address" } } @@ -611,11 +611,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Address_$7890", + "typeIdentifier": "t_contract$_Address_$7812", "typeString": "library Address" } ], - "id": 7864, + "id": 7786, "isConstant": false, "isLValue": false, "isPure": true, @@ -628,7 +628,7 @@ }, "typeName": "address" }, - "id": 7866, + "id": 7788, "isConstant": false, "isLValue": false, "isPure": false, @@ -642,7 +642,7 @@ "typeString": "address" } }, - "id": 7867, + "id": 7789, "isConstant": false, "isLValue": false, "isPure": false, @@ -660,11 +660,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 7868, + "id": 7790, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7860, + "referencedDeclaration": 7782, "src": "2701:6:33", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -680,7 +680,7 @@ { "argumentTypes": null, "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", - "id": 7870, + "id": 7792, "isConstant": false, "isLValue": false, "isPure": true, @@ -707,21 +707,21 @@ "typeString": "literal_string \"Address: insufficient balance\"" } ], - "id": 7863, + "id": 7785, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2668:7:33", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7871, + "id": 7793, "isConstant": false, "isLValue": false, "isPure": false, @@ -735,22 +735,22 @@ "typeString": "tuple()" } }, - "id": 7872, + "id": 7794, "nodeType": "ExpressionStatement", "src": "2668:73:33" }, { "assignments": [ - 7874, + 7796, null ], "declarations": [ { "constant": false, - "id": 7874, + "id": 7796, "name": "success", "nodeType": "VariableDeclaration", - "scope": 7888, + "scope": 7810, "src": "2807:12:33", "stateVariable": false, "storageLocation": "default", @@ -759,7 +759,7 @@ "typeString": "bool" }, "typeName": { - "id": 7873, + "id": 7795, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2807:4:33", @@ -773,14 +773,14 @@ }, null ], - "id": 7882, + "id": 7804, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "", - "id": 7880, + "id": 7802, "isConstant": false, "isLValue": false, "isPure": true, @@ -806,11 +806,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7878, + "id": 7800, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7860, + "referencedDeclaration": 7782, "src": "2846:6:33", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -829,18 +829,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7875, + "id": 7797, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7858, + "referencedDeclaration": 7780, "src": "2825:9:33", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 7876, + "id": 7798, "isConstant": false, "isLValue": false, "isPure": false, @@ -854,7 +854,7 @@ "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 7877, + "id": 7799, "isConstant": false, "isLValue": false, "isPure": false, @@ -868,7 +868,7 @@ "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 7879, + "id": 7801, "isConstant": false, "isLValue": false, "isPure": false, @@ -882,7 +882,7 @@ "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 7881, + "id": 7803, "isConstant": false, "isLValue": false, "isPure": false, @@ -905,11 +905,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7884, + "id": 7806, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7874, + "referencedDeclaration": 7796, "src": "2875:7:33", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -919,7 +919,7 @@ { "argumentTypes": null, "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", - "id": 7885, + "id": 7807, "isConstant": false, "isLValue": false, "isPure": true, @@ -946,21 +946,21 @@ "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" } ], - "id": 7883, + "id": 7805, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2867:7:33", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7886, + "id": 7808, "isConstant": false, "isLValue": false, "isPure": false, @@ -974,29 +974,29 @@ "typeString": "tuple()" } }, - "id": 7887, + "id": 7809, "nodeType": "ExpressionStatement", "src": "2867:78:33" } ] }, "documentation": "@dev Replacement for Solidity's `transfer`: sends `amount` wei to\n`recipient`, forwarding all available gas and reverting on errors.\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\nof certain opcodes, possibly making contracts go over the 2300 gas limit\nimposed by `transfer`, making them unable to receive funds via\n`transfer`. {sendValue} removes this limitation.\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n * IMPORTANT: because control is transferred to `recipient`, care must be\ntaken to not create reentrancy vulnerabilities. Consider using\n{ReentrancyGuard} or the\nhttps://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n * _Available since v2.4.0._", - "id": 7889, + "id": 7811, "implemented": true, "kind": "function", "modifiers": [], "name": "sendValue", "nodeType": "FunctionDefinition", "parameters": { - "id": 7861, + "id": 7783, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7858, + "id": 7780, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 7889, + "scope": 7811, "src": "2606:25:33", "stateVariable": false, "storageLocation": "default", @@ -1005,7 +1005,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7857, + "id": 7779, "name": "address", "nodeType": "ElementaryTypeName", "src": "2606:15:33", @@ -1020,10 +1020,10 @@ }, { "constant": false, - "id": 7860, + "id": 7782, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 7889, + "scope": 7811, "src": "2633:14:33", "stateVariable": false, "storageLocation": "default", @@ -1032,7 +1032,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7859, + "id": 7781, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2633:7:33", @@ -1048,19 +1048,19 @@ "src": "2605:43:33" }, "returnParameters": { - "id": 7862, + "id": 7784, "nodeType": "ParameterList", "parameters": [], "src": "2658:0:33" }, - "scope": 7890, + "scope": 7812, "src": "2587:365:33", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 7891, + "scope": 7813, "src": "93:2861:33" } ], @@ -1070,14 +1070,14 @@ "absolutePath": "@openzeppelin/contracts/utils/Address.sol", "exportedSymbols": { "Address": [ - 7890 + 7812 ] }, - "id": 7891, + "id": 7813, "nodeType": "SourceUnit", "nodes": [ { - "id": 7817, + "id": 7739, "literals": [ "solidity", "^", @@ -1093,30 +1093,30 @@ "contractKind": "library", "documentation": "@dev Collection of functions related to the address type", "fullyImplemented": true, - "id": 7890, + "id": 7812, "linearizedBaseContracts": [ - 7890 + 7812 ], "name": "Address", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 7841, + "id": 7763, "nodeType": "Block", "src": "752:544:33", "statements": [ { "assignments": [ - 7825 + 7747 ], "declarations": [ { "constant": false, - "id": 7825, + "id": 7747, "name": "codehash", "nodeType": "VariableDeclaration", - "scope": 7841, + "scope": 7763, "src": "1004:16:33", "stateVariable": false, "storageLocation": "default", @@ -1125,7 +1125,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 7824, + "id": 7746, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1004:7:33", @@ -1138,22 +1138,22 @@ "visibility": "internal" } ], - "id": 7826, + "id": 7748, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "1004:16:33" }, { "assignments": [ - 7828 + 7750 ], "declarations": [ { "constant": false, - "id": 7828, + "id": 7750, "name": "accountHash", "nodeType": "VariableDeclaration", - "scope": 7841, + "scope": 7763, "src": "1030:19:33", "stateVariable": false, "storageLocation": "default", @@ -1162,7 +1162,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 7827, + "id": 7749, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1030:7:33", @@ -1175,11 +1175,11 @@ "visibility": "internal" } ], - "id": 7830, + "id": 7752, "initialValue": { "argumentTypes": null, "hexValue": "307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730", - "id": 7829, + "id": 7751, "isConstant": false, "isLValue": false, "isPure": true, @@ -1201,7 +1201,7 @@ "externalReferences": [ { "codehash": { - "declaration": 7825, + "declaration": 7747, "isOffset": false, "isSlot": false, "src": "1195:8:33", @@ -1210,7 +1210,7 @@ }, { "account": { - "declaration": 7819, + "declaration": 7741, "isOffset": false, "isSlot": false, "src": "1219:7:33", @@ -1218,7 +1218,7 @@ } } ], - "id": 7831, + "id": 7753, "nodeType": "InlineAssembly", "operations": "{\n codehash := extcodehash(account)\n}", "src": "1184:45:33" @@ -1233,7 +1233,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 7838, + "id": 7760, "isConstant": false, "isLValue": false, "isPure": false, @@ -1244,18 +1244,18 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 7834, + "id": 7756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7832, + "id": 7754, "name": "codehash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7825, + "referencedDeclaration": 7747, "src": "1246:8:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1266,11 +1266,11 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 7833, + "id": 7755, "name": "accountHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7828, + "referencedDeclaration": 7750, "src": "1258:11:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1291,18 +1291,18 @@ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, - "id": 7837, + "id": 7759, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7835, + "id": 7757, "name": "codehash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7825, + "referencedDeclaration": 7747, "src": "1273:8:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1314,7 +1314,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "307830", - "id": 7836, + "id": 7758, "isConstant": false, "isLValue": false, "isPure": true, @@ -1342,7 +1342,7 @@ } } ], - "id": 7839, + "id": 7761, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -1355,30 +1355,30 @@ "typeString": "bool" } }, - "functionReturnParameters": 7823, - "id": 7840, + "functionReturnParameters": 7745, + "id": 7762, "nodeType": "Return", "src": "1238:51:33" } ] }, "documentation": "@dev Returns true if `account` is a contract.\n * [IMPORTANT]\n====\nIt is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.\n * Among others, `isContract` will return false for the following \ntypes of addresses:\n * - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n====", - "id": 7842, + "id": 7764, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nodeType": "FunctionDefinition", "parameters": { - "id": 7820, + "id": 7742, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7819, + "id": 7741, "name": "account", "nodeType": "VariableDeclaration", - "scope": 7842, + "scope": 7764, "src": "706:15:33", "stateVariable": false, "storageLocation": "default", @@ -1387,7 +1387,7 @@ "typeString": "address" }, "typeName": { - "id": 7818, + "id": 7740, "name": "address", "nodeType": "ElementaryTypeName", "src": "706:7:33", @@ -1404,15 +1404,15 @@ "src": "705:17:33" }, "returnParameters": { - "id": 7823, + "id": 7745, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7822, + "id": 7744, "name": "", "nodeType": "VariableDeclaration", - "scope": 7842, + "scope": 7764, "src": "746:4:33", "stateVariable": false, "storageLocation": "default", @@ -1421,7 +1421,7 @@ "typeString": "bool" }, "typeName": { - "id": 7821, + "id": 7743, "name": "bool", "nodeType": "ElementaryTypeName", "src": "746:4:33", @@ -1436,7 +1436,7 @@ ], "src": "745:6:33" }, - "scope": 7890, + "scope": 7812, "src": "686:610:33", "stateMutability": "view", "superFunction": null, @@ -1444,7 +1444,7 @@ }, { "body": { - "id": 7855, + "id": 7777, "nodeType": "Block", "src": "1581:49:33", "statements": [ @@ -1457,11 +1457,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7851, + "id": 7773, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7844, + "referencedDeclaration": 7766, "src": "1614:7:33", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1476,7 +1476,7 @@ "typeString": "address" } ], - "id": 7850, + "id": 7772, "isConstant": false, "isLValue": false, "isPure": true, @@ -1489,7 +1489,7 @@ }, "typeName": "uint160" }, - "id": 7852, + "id": 7774, "isConstant": false, "isLValue": false, "isPure": false, @@ -1511,7 +1511,7 @@ "typeString": "uint160" } ], - "id": 7849, + "id": 7771, "isConstant": false, "isLValue": false, "isPure": true, @@ -1524,7 +1524,7 @@ }, "typeName": "address" }, - "id": 7853, + "id": 7775, "isConstant": false, "isLValue": false, "isPure": false, @@ -1538,30 +1538,30 @@ "typeString": "address payable" } }, - "functionReturnParameters": 7848, - "id": 7854, + "functionReturnParameters": 7770, + "id": 7776, "nodeType": "Return", "src": "1591:32:33" } ] }, "documentation": "@dev Converts an `address` into `address payable`. Note that this is\nsimply a type cast: the actual underlying value is not changed.\n * _Available since v2.4.0._", - "id": 7856, + "id": 7778, "implemented": true, "kind": "function", "modifiers": [], "name": "toPayable", "nodeType": "FunctionDefinition", "parameters": { - "id": 7845, + "id": 7767, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7844, + "id": 7766, "name": "account", "nodeType": "VariableDeclaration", - "scope": 7856, + "scope": 7778, "src": "1524:15:33", "stateVariable": false, "storageLocation": "default", @@ -1570,7 +1570,7 @@ "typeString": "address" }, "typeName": { - "id": 7843, + "id": 7765, "name": "address", "nodeType": "ElementaryTypeName", "src": "1524:7:33", @@ -1587,15 +1587,15 @@ "src": "1523:17:33" }, "returnParameters": { - "id": 7848, + "id": 7770, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7847, + "id": 7769, "name": "", "nodeType": "VariableDeclaration", - "scope": 7856, + "scope": 7778, "src": "1564:15:33", "stateVariable": false, "storageLocation": "default", @@ -1604,7 +1604,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7846, + "id": 7768, "name": "address", "nodeType": "ElementaryTypeName", "src": "1564:15:33", @@ -1620,7 +1620,7 @@ ], "src": "1563:17:33" }, - "scope": 7890, + "scope": 7812, "src": "1505:125:33", "stateMutability": "pure", "superFunction": null, @@ -1628,7 +1628,7 @@ }, { "body": { - "id": 7888, + "id": 7810, "nodeType": "Block", "src": "2658:294:33", "statements": [ @@ -1642,7 +1642,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7869, + "id": 7791, "isConstant": false, "isLValue": false, "isPure": false, @@ -1654,14 +1654,14 @@ "arguments": [ { "argumentTypes": null, - "id": 7865, + "id": 7787, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7925, + "referencedDeclaration": 7847, "src": "2684:4:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$7890", + "typeIdentifier": "t_contract$_Address_$7812", "typeString": "library Address" } } @@ -1669,11 +1669,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Address_$7890", + "typeIdentifier": "t_contract$_Address_$7812", "typeString": "library Address" } ], - "id": 7864, + "id": 7786, "isConstant": false, "isLValue": false, "isPure": true, @@ -1686,7 +1686,7 @@ }, "typeName": "address" }, - "id": 7866, + "id": 7788, "isConstant": false, "isLValue": false, "isPure": false, @@ -1700,7 +1700,7 @@ "typeString": "address" } }, - "id": 7867, + "id": 7789, "isConstant": false, "isLValue": false, "isPure": false, @@ -1718,11 +1718,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 7868, + "id": 7790, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7860, + "referencedDeclaration": 7782, "src": "2701:6:33", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1738,7 +1738,7 @@ { "argumentTypes": null, "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", - "id": 7870, + "id": 7792, "isConstant": false, "isLValue": false, "isPure": true, @@ -1765,21 +1765,21 @@ "typeString": "literal_string \"Address: insufficient balance\"" } ], - "id": 7863, + "id": 7785, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2668:7:33", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7871, + "id": 7793, "isConstant": false, "isLValue": false, "isPure": false, @@ -1793,22 +1793,22 @@ "typeString": "tuple()" } }, - "id": 7872, + "id": 7794, "nodeType": "ExpressionStatement", "src": "2668:73:33" }, { "assignments": [ - 7874, + 7796, null ], "declarations": [ { "constant": false, - "id": 7874, + "id": 7796, "name": "success", "nodeType": "VariableDeclaration", - "scope": 7888, + "scope": 7810, "src": "2807:12:33", "stateVariable": false, "storageLocation": "default", @@ -1817,7 +1817,7 @@ "typeString": "bool" }, "typeName": { - "id": 7873, + "id": 7795, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2807:4:33", @@ -1831,14 +1831,14 @@ }, null ], - "id": 7882, + "id": 7804, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "", - "id": 7880, + "id": 7802, "isConstant": false, "isLValue": false, "isPure": true, @@ -1864,11 +1864,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7878, + "id": 7800, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7860, + "referencedDeclaration": 7782, "src": "2846:6:33", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1887,18 +1887,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 7875, + "id": 7797, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7858, + "referencedDeclaration": 7780, "src": "2825:9:33", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 7876, + "id": 7798, "isConstant": false, "isLValue": false, "isPure": false, @@ -1912,7 +1912,7 @@ "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 7877, + "id": 7799, "isConstant": false, "isLValue": false, "isPure": false, @@ -1926,7 +1926,7 @@ "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 7879, + "id": 7801, "isConstant": false, "isLValue": false, "isPure": false, @@ -1940,7 +1940,7 @@ "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 7881, + "id": 7803, "isConstant": false, "isLValue": false, "isPure": false, @@ -1963,11 +1963,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7884, + "id": 7806, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7874, + "referencedDeclaration": 7796, "src": "2875:7:33", "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1977,7 +1977,7 @@ { "argumentTypes": null, "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", - "id": 7885, + "id": 7807, "isConstant": false, "isLValue": false, "isPure": true, @@ -2004,21 +2004,21 @@ "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" } ], - "id": 7883, + "id": 7805, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2867:7:33", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7886, + "id": 7808, "isConstant": false, "isLValue": false, "isPure": false, @@ -2032,29 +2032,29 @@ "typeString": "tuple()" } }, - "id": 7887, + "id": 7809, "nodeType": "ExpressionStatement", "src": "2867:78:33" } ] }, "documentation": "@dev Replacement for Solidity's `transfer`: sends `amount` wei to\n`recipient`, forwarding all available gas and reverting on errors.\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\nof certain opcodes, possibly making contracts go over the 2300 gas limit\nimposed by `transfer`, making them unable to receive funds via\n`transfer`. {sendValue} removes this limitation.\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n * IMPORTANT: because control is transferred to `recipient`, care must be\ntaken to not create reentrancy vulnerabilities. Consider using\n{ReentrancyGuard} or the\nhttps://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n * _Available since v2.4.0._", - "id": 7889, + "id": 7811, "implemented": true, "kind": "function", "modifiers": [], "name": "sendValue", "nodeType": "FunctionDefinition", "parameters": { - "id": 7861, + "id": 7783, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7858, + "id": 7780, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 7889, + "scope": 7811, "src": "2606:25:33", "stateVariable": false, "storageLocation": "default", @@ -2063,7 +2063,7 @@ "typeString": "address payable" }, "typeName": { - "id": 7857, + "id": 7779, "name": "address", "nodeType": "ElementaryTypeName", "src": "2606:15:33", @@ -2078,10 +2078,10 @@ }, { "constant": false, - "id": 7860, + "id": 7782, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 7889, + "scope": 7811, "src": "2633:14:33", "stateVariable": false, "storageLocation": "default", @@ -2090,7 +2090,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7859, + "id": 7781, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2633:7:33", @@ -2106,19 +2106,19 @@ "src": "2605:43:33" }, "returnParameters": { - "id": 7862, + "id": 7784, "nodeType": "ParameterList", "parameters": [], "src": "2658:0:33" }, - "scope": 7890, + "scope": 7812, "src": "2587:365:33", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 7891, + "scope": 7813, "src": "93:2861:33" } ], @@ -2130,7 +2130,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.968Z", + "updatedAt": "2020-04-03T06:25:13.653Z", "devdoc": { "details": "Collection of functions related to the address type", "methods": {} diff --git a/packages/smart-contracts/artifacts/AddressRegistry.json b/packages/smart-contracts/artifacts/AddressRegistry.json index d0ae99d..ae32069 100644 --- a/packages/smart-contracts/artifacts/AddressRegistry.json +++ b/packages/smart-contracts/artifacts/AddressRegistry.json @@ -287,25 +287,25 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"AaveEthAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"AaveLendingPoolAddressProviderAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BatAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BatJoinAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CDaiAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CEtherAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CSaiAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CUSDCAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CompoundComptrollerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CompoundPriceOracleAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DaiAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DaiJoinAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DssCdpManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DssProxyActionsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EthJoinAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"JugAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"UniswapFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"UsdcAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"UsdcJoinAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":\"AddressRegistry\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]}},\"version\":1}", - "bytecode": "0x60806040527324a42fd28c976a61df5d00d0599c34c4f90748c86000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c0a47dfe034b400b47bdad5fecda2621de6c4d95600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731d8aedc9e924730dd3f9641cdb4d1b92b848b4bd600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733d9819210a31b4961b30ef54be2aed79b9c9cd3b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734ddc2d193948926d02f9b1fe9e1daa0718270ed5600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507339aa39c021dfbae8fac545936693ac917d5e7563600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735d3a536e4d6dbd6114cc1ead35777bab948e3643600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f5dce57282a584d2746faf1593d3121fcac444dc600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736b175474e89094c44da98b954eedeac495271d0f600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730d8775f648430679a709e98d2b0cb6250d2887ef600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732f0b23f53734252bda2277357e97e1517d6b042a600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a191e578a6736167326d05c119ce0c90849e84b7600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733d0b1912b66114d4096f48a8cee3a56c231772ca600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739759a6ac90977b93b58547b4a71c78317f391a28600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507319c0976f590d67707e62397c87829d896dc0f1f1601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507382ecd135dce65fbc6dbdd0e4237e0af93ffd5038601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735ef30b9986345249bc32d8928b7ee64de9435e39601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561065e57600080fd5b506109aa8061066e6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063744d2712116100ad578063b29ced0611610071578063b29ced0614610532578063bd020fbc1461057c578063beea14ce146105c6578063ee2a941114610610578063f5315b141461065a57610121565b8063744d2712146103c057806379fa686b1461040a5780638ec9f15f14610454578063a303fcdb1461049e578063ac92d52b146104e857610121565b806356cc94a2116100f457806356cc94a21461024e5780635ed75a2f146102985780635f1726c7146102e257806365276bdb1461032c578063730779801461037657610121565b80630f1eb85b146101265780633f6dc33b1461017057806348665b02146101ba578063515cb0e114610204575b600080fd5b61012e6106a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101786106ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101c26106ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61020c610715565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61025661073b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a0610761565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ea610787565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103346107ad565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037e6107d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103c86107f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61041261081f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61045c610845565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a661086b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104f0610891565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053a6108b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105846108dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105ce610903565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610618610929565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61066261094f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a723158202846fd89a258ffa67b2f2a6a83c678401f25bf7ba3eb2c9a8786bf0037c6353e64736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063744d2712116100ad578063b29ced0611610071578063b29ced0614610532578063bd020fbc1461057c578063beea14ce146105c6578063ee2a941114610610578063f5315b141461065a57610121565b8063744d2712146103c057806379fa686b1461040a5780638ec9f15f14610454578063a303fcdb1461049e578063ac92d52b146104e857610121565b806356cc94a2116100f457806356cc94a21461024e5780635ed75a2f146102985780635f1726c7146102e257806365276bdb1461032c578063730779801461037657610121565b80630f1eb85b146101265780633f6dc33b1461017057806348665b02146101ba578063515cb0e114610204575b600080fd5b61012e6106a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101786106ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101c26106ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61020c610715565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61025661073b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a0610761565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ea610787565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103346107ad565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037e6107d3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103c86107f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61041261081f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61045c610845565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a661086b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104f0610891565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053a6108b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105846108dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105ce610903565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610618610929565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61066261094f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a723158202846fd89a258ffa67b2f2a6a83c678401f25bf7ba3eb2c9a8786bf0037c6353e64736f6c63430005100032", - "sourceMap": "25:1787:31:-;;;123:42;68:97;;;;;;;;;;;;;;;;;;;;203:42;171:74;;;;;;;;;;;;;;;;;;;;306:42;267:81;;;;;;;;;;;;;;;;;;;;415:42;371:86;;;;;;;;;;;;;;;;;;;;507:42;463:86;;;;;;;;;;;;;;;;;;;;586:42;555:73;;;;;;;;;;;;;;;;;;;;664:42;634:72;;;;;;;;;;;;;;;;;;;;741:42;712:71;;;;;;;;;;;;;;;;;;;;818:42;789:71;;;;;;;;;;;;;;;;;;;;911:42;883:70;;;;;;;;;;;;;;;;;;;;987:42;959:70;;;;;;;;;;;;;;;;;;;;1064:42;1035:71;;;;;;;;;;;;;;;;;;;;1276:42;1244:74;;;;;;;;;;;;;;;;;;;;1357:42;1324:75;;;;;;;;;;;;;;;;;;;;1437:42;1405:74;;;;;;;;;;;;;;;;;;;;1517:42;1485:74;;;;;;;;;;;;;;;;;;;;1593:42;1565:70;;;;;;;;;;;;;;;;;;;;1681:42;1641:82;;;;;;;;;;;;;;;;;;;;1767:42;1729:80;;;;;;;;;;;;;;;;;;;;25:1787;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:1787:31;;;;;;;", - "deployedSourceMap": "25:1787:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:1787:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1324:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;68:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1405:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;267:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;171:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1729:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;789:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;371:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1035:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;555:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1641:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1244:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1565:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1485:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;712:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;463:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;959:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;883;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;634:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1324:75;;;;;;;;;;;;;:::o;68:97::-;;;;;;;;;;;;;:::o;1405:74::-;;;;;;;;;;;;;:::o;267:81::-;;;;;;;;;;;;;:::o;171:74::-;;;;;;;;;;;;;:::o;1729:80::-;;;;;;;;;;;;;:::o;789:71::-;;;;;;;;;;;;;:::o;371:86::-;;;;;;;;;;;;;:::o;1035:71::-;;;;;;;;;;;;;:::o;555:73::-;;;;;;;;;;;;;:::o;1641:82::-;;;;;;;;;;;;;:::o;1244:74::-;;;;;;;;;;;;;:::o;1565:70::-;;;;;;;;;;;;;:::o;1485:74::-;;;;;;;;;;;;;:::o;712:71::-;;;;;;;;;;;;;:::o;463:86::-;;;;;;;;;;;;;:::o;959:70::-;;;;;;;;;;;;;:::o;883:::-;;;;;;;;;;;;;:::o;634:72::-;;;;;;;;;;;;;:::o", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"AaveEthAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"AaveLendingPoolAddressProviderAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BatAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BatJoinAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CDaiAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CEtherAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CSaiAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CUSDCAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CompoundComptrollerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CompoundPriceOracleAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DaiAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DaiJoinAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DssCdpManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DssProxyActionsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EthJoinAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"JugAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"UniswapFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"UsdcAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"UsdcJoinAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":\"AddressRegistry\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]}},\"version\":1}", + "bytecode": "0x6080604052600080546001600160a01b03199081167324a42fd28c976a61df5d00d0599c34c4f90748c81790915560018054821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17905560028054821673c0a47dfe034b400b47bdad5fecda2621de6c4d95179055600380548216731d8aedc9e924730dd3f9641cdb4d1b92b848b4bd179055600480548216733d9819210a31b4961b30ef54be2aed79b9c9cd3b179055600580548216734ddc2d193948926d02f9b1fe9e1daa0718270ed51790556006805482167339aa39c021dfbae8fac545936693ac917d5e7563179055600780548216735d3a536e4d6dbd6114cc1ead35777bab948e364317905560088054821673f5dce57282a584d2746faf1593d3121fcac444dc179055600980548216736b175474e89094c44da98b954eedeac495271d0f179055600a80548216730d8775f648430679a709e98d2b0cb6250d2887ef179055600b8054821673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48179055600c80548216732f0b23f53734252bda2277357e97e1517d6b042a179055600d8054821673a191e578a6736167326d05c119ce0c90849e84b7179055600e80548216733d0b1912b66114d4096f48a8cee3a56c231772ca179055600f80548216739759a6ac90977b93b58547b4a71c78317f391a281790556010805482167319c0976f590d67707e62397c87829d896dc0f1f11790556011805482167382ecd135dce65fbc6dbdd0e4237e0af93ffd503817905560128054909116735ef30b9986345249bc32d8928b7ee64de9435e3917905534801561025657600080fd5b5061032c806102666000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063744d2712116100ad578063b29ced0611610071578063b29ced06146101b2578063bd020fbc146101ba578063beea14ce146101c2578063ee2a9411146101ca578063f5315b14146101d257610121565b8063744d27121461018a57806379fa686b146101925780638ec9f15f1461019a578063a303fcdb146101a2578063ac92d52b146101aa57610121565b806356cc94a2116100f457806356cc94a2146101625780635ed75a2f1461016a5780635f1726c71461017257806365276bdb1461017a578063730779801461018257610121565b80630f1eb85b146101265780633f6dc33b1461014a57806348665b0214610152578063515cb0e11461015a575b600080fd5b61012e6101da565b604080516001600160a01b039092168252519081900360200190f35b61012e6101e9565b61012e6101f8565b61012e610207565b61012e610216565b61012e610225565b61012e610234565b61012e610243565b61012e610252565b61012e610261565b61012e610270565b61012e61027f565b61012e61028e565b61012e61029d565b61012e6102ac565b61012e6102bb565b61012e6102ca565b61012e6102d9565b61012e6102e8565b600d546001600160a01b031681565b6000546001600160a01b031681565b600e546001600160a01b031681565b6002546001600160a01b031681565b6001546001600160a01b031681565b6012546001600160a01b031681565b6008546001600160a01b031681565b6003546001600160a01b031681565b600b546001600160a01b031681565b6005546001600160a01b031681565b6011546001600160a01b031681565b600c546001600160a01b031681565b6010546001600160a01b031681565b600f546001600160a01b031681565b6007546001600160a01b031681565b6004546001600160a01b031681565b600a546001600160a01b031681565b6009546001600160a01b031681565b6006546001600160a01b03168156fea265627a7a72315820a7cdef12261a021df3e113d82e4d60f8c9ec54256252388bf970a639e64ab11364736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063744d2712116100ad578063b29ced0611610071578063b29ced06146101b2578063bd020fbc146101ba578063beea14ce146101c2578063ee2a9411146101ca578063f5315b14146101d257610121565b8063744d27121461018a57806379fa686b146101925780638ec9f15f1461019a578063a303fcdb146101a2578063ac92d52b146101aa57610121565b806356cc94a2116100f457806356cc94a2146101625780635ed75a2f1461016a5780635f1726c71461017257806365276bdb1461017a578063730779801461018257610121565b80630f1eb85b146101265780633f6dc33b1461014a57806348665b0214610152578063515cb0e11461015a575b600080fd5b61012e6101da565b604080516001600160a01b039092168252519081900360200190f35b61012e6101e9565b61012e6101f8565b61012e610207565b61012e610216565b61012e610225565b61012e610234565b61012e610243565b61012e610252565b61012e610261565b61012e610270565b61012e61027f565b61012e61028e565b61012e61029d565b61012e6102ac565b61012e6102bb565b61012e6102ca565b61012e6102d9565b61012e6102e8565b600d546001600160a01b031681565b6000546001600160a01b031681565b600e546001600160a01b031681565b6002546001600160a01b031681565b6001546001600160a01b031681565b6012546001600160a01b031681565b6008546001600160a01b031681565b6003546001600160a01b031681565b600b546001600160a01b031681565b6005546001600160a01b031681565b6011546001600160a01b031681565b600c546001600160a01b031681565b6010546001600160a01b031681565b600f546001600160a01b031681565b6007546001600160a01b031681565b6004546001600160a01b031681565b600a546001600160a01b031681565b6009546001600160a01b031681565b6006546001600160a01b03168156fea265627a7a72315820a7cdef12261a021df3e113d82e4d60f8c9ec54256252388bf970a639e64ab11364736f6c63430005100032", + "sourceMap": "25:1787:31:-;;;68:97;;;-1:-1:-1;;;;;;68:97:31;;;123:42;68:97;;;;;171:74;;;;203:42;171:74;;;267:81;;;;;306:42;267:81;;;371:86;;;;;415:42;371:86;;;463;;;;;507:42;463:86;;;555:73;;;;;586:42;555:73;;;634:72;;;;;664:42;634:72;;;712:71;;;;;741:42;712:71;;;789;;;;;818:42;789:71;;;883:70;;;;;911:42;883:70;;;959;;;;;987:42;959:70;;;1035:71;;;;;1064:42;1035:71;;;1244:74;;;;;1276:42;1244:74;;;1324:75;;;;;1357:42;1324:75;;;1405:74;;;;;1437:42;1405:74;;;1485;;;;;1517:42;1485:74;;;1565:70;;;;;1593:42;1565:70;;;1641:82;;;;;1681:42;1641:82;;;1729:80;;;;;;1767:42;1729:80;;;25:1787;5:2:-1;;;;30:1;27;20:12;5:2;25:1787:31;;;;;;;", + "deployedSourceMap": "25:1787:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:1787:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1324:75;;;:::i;:::-;;;;-1:-1:-1;;;;;1324:75:31;;;;;;;;;;;;;;68:97;;;:::i;1405:74::-;;;:::i;267:81::-;;;:::i;171:74::-;;;:::i;1729:80::-;;;:::i;789:71::-;;;:::i;371:86::-;;;:::i;1035:71::-;;;:::i;555:73::-;;;:::i;1641:82::-;;;:::i;1244:74::-;;;:::i;1565:70::-;;;:::i;1485:74::-;;;:::i;712:71::-;;;:::i;463:86::-;;;:::i;959:70::-;;;:::i;883:::-;;;:::i;634:72::-;;;:::i;1324:75::-;;;-1:-1:-1;;;;;1324:75:31;;:::o;68:97::-;;;-1:-1:-1;;;;;68:97:31;;:::o;1405:74::-;;;-1:-1:-1;;;;;1405:74:31;;:::o;267:81::-;;;-1:-1:-1;;;;;267:81:31;;:::o;171:74::-;;;-1:-1:-1;;;;;171:74:31;;:::o;1729:80::-;;;-1:-1:-1;;;;;1729:80:31;;:::o;789:71::-;;;-1:-1:-1;;;;;789:71:31;;:::o;371:86::-;;;-1:-1:-1;;;;;371:86:31;;:::o;1035:71::-;;;-1:-1:-1;;;;;1035:71:31;;:::o;555:73::-;;;-1:-1:-1;;;;;555:73:31;;:::o;1641:82::-;;;-1:-1:-1;;;;;1641:82:31;;:::o;1244:74::-;;;-1:-1:-1;;;;;1244:74:31;;:::o;1565:70::-;;;-1:-1:-1;;;;;1565:70:31;;:::o;1485:74::-;;;-1:-1:-1;;;;;1485:74:31;;:::o;712:71::-;;;-1:-1:-1;;;;;712:71:31;;:::o;463:86::-;;;-1:-1:-1;;;;;463:86:31;;:::o;959:70::-;;;-1:-1:-1;;;;;959:70:31;;:::o;883:::-;;;-1:-1:-1;;;;;883:70:31;;:::o;634:72::-;;;-1:-1:-1;;;;;634:72:31;;:::o", "source": "pragma solidity 0.5.16;\n\ncontract AddressRegistry {\n // Aave\n address public AaveLendingPoolAddressProviderAddress = 0x24a42fD28C976A61Df5D00D0599C34c4f90748c8;\n address public AaveEthAddress = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\n\n // Uniswap\n address public UniswapFactoryAddress = 0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95;\n\n // Compound\n address public CompoundPriceOracleAddress = 0x1D8aEdc9E924730DD3f9641CDb4D1B92B848b4bd;\n address public CompoundComptrollerAddress = 0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B;\n address public CEtherAddress = 0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5;\n address public CUSDCAddress = 0x39AA39c021dfbaE8faC545936693aC917d5E7563;\n address public CDaiAddress = 0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643;\n address public CSaiAddress = 0xF5DCe57282A584D2746FaF1593d3121Fcac444dC;\n\n // Token(s)\n address public DaiAddress = 0x6B175474E89094C44Da98b954EedeAC495271d0F;\n address public BatAddress = 0x0D8775F648430679A709E98d2b0Cb6250d2887EF;\n address public UsdcAddress = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;\n\n // MakerDAO\n // https://changelog.makerdao.com/\n // https://changelog.makerdao.com/releases/mainnet/1.0.4/contracts.json\n address public EthJoinAddress = 0x2F0b23f53734252Bda2277357e97e1517d6B042A;\n address public UsdcJoinAddress = 0xA191e578a6736167326d05c119CE0c90849E84B7;\n address public BatJoinAddress = 0x3D0B1912B66114d4096F48A8CEe3A56C231772cA;\n address public DaiJoinAddress = 0x9759A6Ac90977b93B58547b4A71c78317f391A28;\n address public JugAddress = 0x19c0976f590D67707E62397C87829d896Dc0f1F1;\n address public DssProxyActionsAddress = 0x82ecD135Dce65Fbc6DbdD0e4237E0AF93FFD5038;\n address public DssCdpManagerAddress = 0x5ef30b9986345249bc32d8928B7ee64DE9435E39;\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol", "ast": { "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol", "exportedSymbols": { "AddressRegistry": [ - 7628 + 7550 ] }, - "id": 7629, + "id": 7551, "nodeType": "SourceUnit", "nodes": [ { - "id": 7570, + "id": 7492, "literals": [ "solidity", "0.5", @@ -320,19 +320,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 7628, + "id": 7550, "linearizedBaseContracts": [ - 7628 + 7550 ], "name": "AddressRegistry", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 7573, + "id": 7495, "name": "AaveLendingPoolAddressProviderAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "68:97:31", "stateVariable": true, "storageLocation": "default", @@ -341,7 +341,7 @@ "typeString": "address" }, "typeName": { - "id": 7571, + "id": 7493, "name": "address", "nodeType": "ElementaryTypeName", "src": "68:7:31", @@ -354,7 +354,7 @@ "value": { "argumentTypes": null, "hexValue": "307832346134326644323843393736413631446635443030443035393943333463346639303734386338", - "id": 7572, + "id": 7494, "isConstant": false, "isLValue": false, "isPure": true, @@ -373,10 +373,10 @@ }, { "constant": false, - "id": 7576, + "id": 7498, "name": "AaveEthAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "171:74:31", "stateVariable": true, "storageLocation": "default", @@ -385,7 +385,7 @@ "typeString": "address" }, "typeName": { - "id": 7574, + "id": 7496, "name": "address", "nodeType": "ElementaryTypeName", "src": "171:7:31", @@ -398,7 +398,7 @@ "value": { "argumentTypes": null, "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545", - "id": 7575, + "id": 7497, "isConstant": false, "isLValue": false, "isPure": true, @@ -417,10 +417,10 @@ }, { "constant": false, - "id": 7579, + "id": 7501, "name": "UniswapFactoryAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "267:81:31", "stateVariable": true, "storageLocation": "default", @@ -429,7 +429,7 @@ "typeString": "address" }, "typeName": { - "id": 7577, + "id": 7499, "name": "address", "nodeType": "ElementaryTypeName", "src": "267:7:31", @@ -442,7 +442,7 @@ "value": { "argumentTypes": null, "hexValue": "307863306134376446653033344234303042343762446144354665634461323632316465366334643935", - "id": 7578, + "id": 7500, "isConstant": false, "isLValue": false, "isPure": true, @@ -461,10 +461,10 @@ }, { "constant": false, - "id": 7582, + "id": 7504, "name": "CompoundPriceOracleAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "371:86:31", "stateVariable": true, "storageLocation": "default", @@ -473,7 +473,7 @@ "typeString": "address" }, "typeName": { - "id": 7580, + "id": 7502, "name": "address", "nodeType": "ElementaryTypeName", "src": "371:7:31", @@ -486,7 +486,7 @@ "value": { "argumentTypes": null, "hexValue": "307831443861456463394539323437333044443366393634314344623444314239324238343862346264", - "id": 7581, + "id": 7503, "isConstant": false, "isLValue": false, "isPure": true, @@ -505,10 +505,10 @@ }, { "constant": false, - "id": 7585, + "id": 7507, "name": "CompoundComptrollerAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "463:86:31", "stateVariable": true, "storageLocation": "default", @@ -517,7 +517,7 @@ "typeString": "address" }, "typeName": { - "id": 7583, + "id": 7505, "name": "address", "nodeType": "ElementaryTypeName", "src": "463:7:31", @@ -530,7 +530,7 @@ "value": { "argumentTypes": null, "hexValue": "307833643938313932313041333162343936316233304546353462453261654437394239633943643342", - "id": 7584, + "id": 7506, "isConstant": false, "isLValue": false, "isPure": true, @@ -549,10 +549,10 @@ }, { "constant": false, - "id": 7588, + "id": 7510, "name": "CEtherAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "555:73:31", "stateVariable": true, "storageLocation": "default", @@ -561,7 +561,7 @@ "typeString": "address" }, "typeName": { - "id": 7586, + "id": 7508, "name": "address", "nodeType": "ElementaryTypeName", "src": "555:7:31", @@ -574,7 +574,7 @@ "value": { "argumentTypes": null, "hexValue": "307834446463324431393339343839323644303266394231664539653164616130373138323730454435", - "id": 7587, + "id": 7509, "isConstant": false, "isLValue": false, "isPure": true, @@ -593,10 +593,10 @@ }, { "constant": false, - "id": 7591, + "id": 7513, "name": "CUSDCAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "634:72:31", "stateVariable": true, "storageLocation": "default", @@ -605,7 +605,7 @@ "typeString": "address" }, "typeName": { - "id": 7589, + "id": 7511, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:31", @@ -618,7 +618,7 @@ "value": { "argumentTypes": null, "hexValue": "307833394141333963303231646662614538666143353435393336363933614339313764354537353633", - "id": 7590, + "id": 7512, "isConstant": false, "isLValue": false, "isPure": true, @@ -637,10 +637,10 @@ }, { "constant": false, - "id": 7594, + "id": 7516, "name": "CDaiAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "712:71:31", "stateVariable": true, "storageLocation": "default", @@ -649,7 +649,7 @@ "typeString": "address" }, "typeName": { - "id": 7592, + "id": 7514, "name": "address", "nodeType": "ElementaryTypeName", "src": "712:7:31", @@ -662,7 +662,7 @@ "value": { "argumentTypes": null, "hexValue": "307835643361353336453444364462443631313463633145616433353737376241423934384533363433", - "id": 7593, + "id": 7515, "isConstant": false, "isLValue": false, "isPure": true, @@ -681,10 +681,10 @@ }, { "constant": false, - "id": 7597, + "id": 7519, "name": "CSaiAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "789:71:31", "stateVariable": true, "storageLocation": "default", @@ -693,7 +693,7 @@ "typeString": "address" }, "typeName": { - "id": 7595, + "id": 7517, "name": "address", "nodeType": "ElementaryTypeName", "src": "789:7:31", @@ -706,7 +706,7 @@ "value": { "argumentTypes": null, "hexValue": "307846354443653537323832413538344432373436466146313539336433313231466361633434346443", - "id": 7596, + "id": 7518, "isConstant": false, "isLValue": false, "isPure": true, @@ -725,10 +725,10 @@ }, { "constant": false, - "id": 7600, + "id": 7522, "name": "DaiAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "883:70:31", "stateVariable": true, "storageLocation": "default", @@ -737,7 +737,7 @@ "typeString": "address" }, "typeName": { - "id": 7598, + "id": 7520, "name": "address", "nodeType": "ElementaryTypeName", "src": "883:7:31", @@ -750,7 +750,7 @@ "value": { "argumentTypes": null, "hexValue": "307836423137353437344538393039344334344461393862393534456564654143343935323731643046", - "id": 7599, + "id": 7521, "isConstant": false, "isLValue": false, "isPure": true, @@ -769,10 +769,10 @@ }, { "constant": false, - "id": 7603, + "id": 7525, "name": "BatAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "959:70:31", "stateVariable": true, "storageLocation": "default", @@ -781,7 +781,7 @@ "typeString": "address" }, "typeName": { - "id": 7601, + "id": 7523, "name": "address", "nodeType": "ElementaryTypeName", "src": "959:7:31", @@ -794,7 +794,7 @@ "value": { "argumentTypes": null, "hexValue": "307830443837373546363438343330363739413730394539386432623043623632353064323838374546", - "id": 7602, + "id": 7524, "isConstant": false, "isLValue": false, "isPure": true, @@ -813,10 +813,10 @@ }, { "constant": false, - "id": 7606, + "id": 7528, "name": "UsdcAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1035:71:31", "stateVariable": true, "storageLocation": "default", @@ -825,7 +825,7 @@ "typeString": "address" }, "typeName": { - "id": 7604, + "id": 7526, "name": "address", "nodeType": "ElementaryTypeName", "src": "1035:7:31", @@ -838,7 +838,7 @@ "value": { "argumentTypes": null, "hexValue": "307841306238363939316336323138623336633164313944346132653945623063453336303665423438", - "id": 7605, + "id": 7527, "isConstant": false, "isLValue": false, "isPure": true, @@ -857,10 +857,10 @@ }, { "constant": false, - "id": 7609, + "id": 7531, "name": "EthJoinAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1244:74:31", "stateVariable": true, "storageLocation": "default", @@ -869,7 +869,7 @@ "typeString": "address" }, "typeName": { - "id": 7607, + "id": 7529, "name": "address", "nodeType": "ElementaryTypeName", "src": "1244:7:31", @@ -882,7 +882,7 @@ "value": { "argumentTypes": null, "hexValue": "307832463062323366353337333432353242646132323737333537653937653135313764364230343241", - "id": 7608, + "id": 7530, "isConstant": false, "isLValue": false, "isPure": true, @@ -901,10 +901,10 @@ }, { "constant": false, - "id": 7612, + "id": 7534, "name": "UsdcJoinAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1324:75:31", "stateVariable": true, "storageLocation": "default", @@ -913,7 +913,7 @@ "typeString": "address" }, "typeName": { - "id": 7610, + "id": 7532, "name": "address", "nodeType": "ElementaryTypeName", "src": "1324:7:31", @@ -926,7 +926,7 @@ "value": { "argumentTypes": null, "hexValue": "307841313931653537386136373336313637333236643035633131394345306339303834394538344237", - "id": 7611, + "id": 7533, "isConstant": false, "isLValue": false, "isPure": true, @@ -945,10 +945,10 @@ }, { "constant": false, - "id": 7615, + "id": 7537, "name": "BatJoinAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1405:74:31", "stateVariable": true, "storageLocation": "default", @@ -957,7 +957,7 @@ "typeString": "address" }, "typeName": { - "id": 7613, + "id": 7535, "name": "address", "nodeType": "ElementaryTypeName", "src": "1405:7:31", @@ -970,7 +970,7 @@ "value": { "argumentTypes": null, "hexValue": "307833443042313931324236363131346434303936463438413843456533413536433233313737326341", - "id": 7614, + "id": 7536, "isConstant": false, "isLValue": false, "isPure": true, @@ -989,10 +989,10 @@ }, { "constant": false, - "id": 7618, + "id": 7540, "name": "DaiJoinAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1485:74:31", "stateVariable": true, "storageLocation": "default", @@ -1001,7 +1001,7 @@ "typeString": "address" }, "typeName": { - "id": 7616, + "id": 7538, "name": "address", "nodeType": "ElementaryTypeName", "src": "1485:7:31", @@ -1014,7 +1014,7 @@ "value": { "argumentTypes": null, "hexValue": "307839373539413641633930393737623933423538353437623441373163373833313766333931413238", - "id": 7617, + "id": 7539, "isConstant": false, "isLValue": false, "isPure": true, @@ -1033,10 +1033,10 @@ }, { "constant": false, - "id": 7621, + "id": 7543, "name": "JugAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1565:70:31", "stateVariable": true, "storageLocation": "default", @@ -1045,7 +1045,7 @@ "typeString": "address" }, "typeName": { - "id": 7619, + "id": 7541, "name": "address", "nodeType": "ElementaryTypeName", "src": "1565:7:31", @@ -1058,7 +1058,7 @@ "value": { "argumentTypes": null, "hexValue": "307831396330393736663539304436373730374536323339374338373832396438393644633066314631", - "id": 7620, + "id": 7542, "isConstant": false, "isLValue": false, "isPure": true, @@ -1077,10 +1077,10 @@ }, { "constant": false, - "id": 7624, + "id": 7546, "name": "DssProxyActionsAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1641:82:31", "stateVariable": true, "storageLocation": "default", @@ -1089,7 +1089,7 @@ "typeString": "address" }, "typeName": { - "id": 7622, + "id": 7544, "name": "address", "nodeType": "ElementaryTypeName", "src": "1641:7:31", @@ -1102,7 +1102,7 @@ "value": { "argumentTypes": null, "hexValue": "307838326563443133354463653635466263364462644430653432333745304146393346464435303338", - "id": 7623, + "id": 7545, "isConstant": false, "isLValue": false, "isPure": true, @@ -1121,10 +1121,10 @@ }, { "constant": false, - "id": 7627, + "id": 7549, "name": "DssCdpManagerAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1729:80:31", "stateVariable": true, "storageLocation": "default", @@ -1133,7 +1133,7 @@ "typeString": "address" }, "typeName": { - "id": 7625, + "id": 7547, "name": "address", "nodeType": "ElementaryTypeName", "src": "1729:7:31", @@ -1146,7 +1146,7 @@ "value": { "argumentTypes": null, "hexValue": "307835656633306239393836333435323439626333326438393238423765653634444539343335453339", - "id": 7626, + "id": 7548, "isConstant": false, "isLValue": false, "isPure": true, @@ -1164,7 +1164,7 @@ "visibility": "public" } ], - "scope": 7629, + "scope": 7551, "src": "25:1787:31" } ], @@ -1174,14 +1174,14 @@ "absolutePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol", "exportedSymbols": { "AddressRegistry": [ - 7628 + 7550 ] }, - "id": 7629, + "id": 7551, "nodeType": "SourceUnit", "nodes": [ { - "id": 7570, + "id": 7492, "literals": [ "solidity", "0.5", @@ -1196,19 +1196,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 7628, + "id": 7550, "linearizedBaseContracts": [ - 7628 + 7550 ], "name": "AddressRegistry", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 7573, + "id": 7495, "name": "AaveLendingPoolAddressProviderAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "68:97:31", "stateVariable": true, "storageLocation": "default", @@ -1217,7 +1217,7 @@ "typeString": "address" }, "typeName": { - "id": 7571, + "id": 7493, "name": "address", "nodeType": "ElementaryTypeName", "src": "68:7:31", @@ -1230,7 +1230,7 @@ "value": { "argumentTypes": null, "hexValue": "307832346134326644323843393736413631446635443030443035393943333463346639303734386338", - "id": 7572, + "id": 7494, "isConstant": false, "isLValue": false, "isPure": true, @@ -1249,10 +1249,10 @@ }, { "constant": false, - "id": 7576, + "id": 7498, "name": "AaveEthAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "171:74:31", "stateVariable": true, "storageLocation": "default", @@ -1261,7 +1261,7 @@ "typeString": "address" }, "typeName": { - "id": 7574, + "id": 7496, "name": "address", "nodeType": "ElementaryTypeName", "src": "171:7:31", @@ -1274,7 +1274,7 @@ "value": { "argumentTypes": null, "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545", - "id": 7575, + "id": 7497, "isConstant": false, "isLValue": false, "isPure": true, @@ -1293,10 +1293,10 @@ }, { "constant": false, - "id": 7579, + "id": 7501, "name": "UniswapFactoryAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "267:81:31", "stateVariable": true, "storageLocation": "default", @@ -1305,7 +1305,7 @@ "typeString": "address" }, "typeName": { - "id": 7577, + "id": 7499, "name": "address", "nodeType": "ElementaryTypeName", "src": "267:7:31", @@ -1318,7 +1318,7 @@ "value": { "argumentTypes": null, "hexValue": "307863306134376446653033344234303042343762446144354665634461323632316465366334643935", - "id": 7578, + "id": 7500, "isConstant": false, "isLValue": false, "isPure": true, @@ -1337,10 +1337,10 @@ }, { "constant": false, - "id": 7582, + "id": 7504, "name": "CompoundPriceOracleAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "371:86:31", "stateVariable": true, "storageLocation": "default", @@ -1349,7 +1349,7 @@ "typeString": "address" }, "typeName": { - "id": 7580, + "id": 7502, "name": "address", "nodeType": "ElementaryTypeName", "src": "371:7:31", @@ -1362,7 +1362,7 @@ "value": { "argumentTypes": null, "hexValue": "307831443861456463394539323437333044443366393634314344623444314239324238343862346264", - "id": 7581, + "id": 7503, "isConstant": false, "isLValue": false, "isPure": true, @@ -1381,10 +1381,10 @@ }, { "constant": false, - "id": 7585, + "id": 7507, "name": "CompoundComptrollerAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "463:86:31", "stateVariable": true, "storageLocation": "default", @@ -1393,7 +1393,7 @@ "typeString": "address" }, "typeName": { - "id": 7583, + "id": 7505, "name": "address", "nodeType": "ElementaryTypeName", "src": "463:7:31", @@ -1406,7 +1406,7 @@ "value": { "argumentTypes": null, "hexValue": "307833643938313932313041333162343936316233304546353462453261654437394239633943643342", - "id": 7584, + "id": 7506, "isConstant": false, "isLValue": false, "isPure": true, @@ -1425,10 +1425,10 @@ }, { "constant": false, - "id": 7588, + "id": 7510, "name": "CEtherAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "555:73:31", "stateVariable": true, "storageLocation": "default", @@ -1437,7 +1437,7 @@ "typeString": "address" }, "typeName": { - "id": 7586, + "id": 7508, "name": "address", "nodeType": "ElementaryTypeName", "src": "555:7:31", @@ -1450,7 +1450,7 @@ "value": { "argumentTypes": null, "hexValue": "307834446463324431393339343839323644303266394231664539653164616130373138323730454435", - "id": 7587, + "id": 7509, "isConstant": false, "isLValue": false, "isPure": true, @@ -1469,10 +1469,10 @@ }, { "constant": false, - "id": 7591, + "id": 7513, "name": "CUSDCAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "634:72:31", "stateVariable": true, "storageLocation": "default", @@ -1481,7 +1481,7 @@ "typeString": "address" }, "typeName": { - "id": 7589, + "id": 7511, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:31", @@ -1494,7 +1494,7 @@ "value": { "argumentTypes": null, "hexValue": "307833394141333963303231646662614538666143353435393336363933614339313764354537353633", - "id": 7590, + "id": 7512, "isConstant": false, "isLValue": false, "isPure": true, @@ -1513,10 +1513,10 @@ }, { "constant": false, - "id": 7594, + "id": 7516, "name": "CDaiAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "712:71:31", "stateVariable": true, "storageLocation": "default", @@ -1525,7 +1525,7 @@ "typeString": "address" }, "typeName": { - "id": 7592, + "id": 7514, "name": "address", "nodeType": "ElementaryTypeName", "src": "712:7:31", @@ -1538,7 +1538,7 @@ "value": { "argumentTypes": null, "hexValue": "307835643361353336453444364462443631313463633145616433353737376241423934384533363433", - "id": 7593, + "id": 7515, "isConstant": false, "isLValue": false, "isPure": true, @@ -1557,10 +1557,10 @@ }, { "constant": false, - "id": 7597, + "id": 7519, "name": "CSaiAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "789:71:31", "stateVariable": true, "storageLocation": "default", @@ -1569,7 +1569,7 @@ "typeString": "address" }, "typeName": { - "id": 7595, + "id": 7517, "name": "address", "nodeType": "ElementaryTypeName", "src": "789:7:31", @@ -1582,7 +1582,7 @@ "value": { "argumentTypes": null, "hexValue": "307846354443653537323832413538344432373436466146313539336433313231466361633434346443", - "id": 7596, + "id": 7518, "isConstant": false, "isLValue": false, "isPure": true, @@ -1601,10 +1601,10 @@ }, { "constant": false, - "id": 7600, + "id": 7522, "name": "DaiAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "883:70:31", "stateVariable": true, "storageLocation": "default", @@ -1613,7 +1613,7 @@ "typeString": "address" }, "typeName": { - "id": 7598, + "id": 7520, "name": "address", "nodeType": "ElementaryTypeName", "src": "883:7:31", @@ -1626,7 +1626,7 @@ "value": { "argumentTypes": null, "hexValue": "307836423137353437344538393039344334344461393862393534456564654143343935323731643046", - "id": 7599, + "id": 7521, "isConstant": false, "isLValue": false, "isPure": true, @@ -1645,10 +1645,10 @@ }, { "constant": false, - "id": 7603, + "id": 7525, "name": "BatAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "959:70:31", "stateVariable": true, "storageLocation": "default", @@ -1657,7 +1657,7 @@ "typeString": "address" }, "typeName": { - "id": 7601, + "id": 7523, "name": "address", "nodeType": "ElementaryTypeName", "src": "959:7:31", @@ -1670,7 +1670,7 @@ "value": { "argumentTypes": null, "hexValue": "307830443837373546363438343330363739413730394539386432623043623632353064323838374546", - "id": 7602, + "id": 7524, "isConstant": false, "isLValue": false, "isPure": true, @@ -1689,10 +1689,10 @@ }, { "constant": false, - "id": 7606, + "id": 7528, "name": "UsdcAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1035:71:31", "stateVariable": true, "storageLocation": "default", @@ -1701,7 +1701,7 @@ "typeString": "address" }, "typeName": { - "id": 7604, + "id": 7526, "name": "address", "nodeType": "ElementaryTypeName", "src": "1035:7:31", @@ -1714,7 +1714,7 @@ "value": { "argumentTypes": null, "hexValue": "307841306238363939316336323138623336633164313944346132653945623063453336303665423438", - "id": 7605, + "id": 7527, "isConstant": false, "isLValue": false, "isPure": true, @@ -1733,10 +1733,10 @@ }, { "constant": false, - "id": 7609, + "id": 7531, "name": "EthJoinAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1244:74:31", "stateVariable": true, "storageLocation": "default", @@ -1745,7 +1745,7 @@ "typeString": "address" }, "typeName": { - "id": 7607, + "id": 7529, "name": "address", "nodeType": "ElementaryTypeName", "src": "1244:7:31", @@ -1758,7 +1758,7 @@ "value": { "argumentTypes": null, "hexValue": "307832463062323366353337333432353242646132323737333537653937653135313764364230343241", - "id": 7608, + "id": 7530, "isConstant": false, "isLValue": false, "isPure": true, @@ -1777,10 +1777,10 @@ }, { "constant": false, - "id": 7612, + "id": 7534, "name": "UsdcJoinAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1324:75:31", "stateVariable": true, "storageLocation": "default", @@ -1789,7 +1789,7 @@ "typeString": "address" }, "typeName": { - "id": 7610, + "id": 7532, "name": "address", "nodeType": "ElementaryTypeName", "src": "1324:7:31", @@ -1802,7 +1802,7 @@ "value": { "argumentTypes": null, "hexValue": "307841313931653537386136373336313637333236643035633131394345306339303834394538344237", - "id": 7611, + "id": 7533, "isConstant": false, "isLValue": false, "isPure": true, @@ -1821,10 +1821,10 @@ }, { "constant": false, - "id": 7615, + "id": 7537, "name": "BatJoinAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1405:74:31", "stateVariable": true, "storageLocation": "default", @@ -1833,7 +1833,7 @@ "typeString": "address" }, "typeName": { - "id": 7613, + "id": 7535, "name": "address", "nodeType": "ElementaryTypeName", "src": "1405:7:31", @@ -1846,7 +1846,7 @@ "value": { "argumentTypes": null, "hexValue": "307833443042313931324236363131346434303936463438413843456533413536433233313737326341", - "id": 7614, + "id": 7536, "isConstant": false, "isLValue": false, "isPure": true, @@ -1865,10 +1865,10 @@ }, { "constant": false, - "id": 7618, + "id": 7540, "name": "DaiJoinAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1485:74:31", "stateVariable": true, "storageLocation": "default", @@ -1877,7 +1877,7 @@ "typeString": "address" }, "typeName": { - "id": 7616, + "id": 7538, "name": "address", "nodeType": "ElementaryTypeName", "src": "1485:7:31", @@ -1890,7 +1890,7 @@ "value": { "argumentTypes": null, "hexValue": "307839373539413641633930393737623933423538353437623441373163373833313766333931413238", - "id": 7617, + "id": 7539, "isConstant": false, "isLValue": false, "isPure": true, @@ -1909,10 +1909,10 @@ }, { "constant": false, - "id": 7621, + "id": 7543, "name": "JugAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1565:70:31", "stateVariable": true, "storageLocation": "default", @@ -1921,7 +1921,7 @@ "typeString": "address" }, "typeName": { - "id": 7619, + "id": 7541, "name": "address", "nodeType": "ElementaryTypeName", "src": "1565:7:31", @@ -1934,7 +1934,7 @@ "value": { "argumentTypes": null, "hexValue": "307831396330393736663539304436373730374536323339374338373832396438393644633066314631", - "id": 7620, + "id": 7542, "isConstant": false, "isLValue": false, "isPure": true, @@ -1953,10 +1953,10 @@ }, { "constant": false, - "id": 7624, + "id": 7546, "name": "DssProxyActionsAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1641:82:31", "stateVariable": true, "storageLocation": "default", @@ -1965,7 +1965,7 @@ "typeString": "address" }, "typeName": { - "id": 7622, + "id": 7544, "name": "address", "nodeType": "ElementaryTypeName", "src": "1641:7:31", @@ -1978,7 +1978,7 @@ "value": { "argumentTypes": null, "hexValue": "307838326563443133354463653635466263364462644430653432333745304146393346464435303338", - "id": 7623, + "id": 7545, "isConstant": false, "isLValue": false, "isPure": true, @@ -1997,10 +1997,10 @@ }, { "constant": false, - "id": 7627, + "id": 7549, "name": "DssCdpManagerAddress", "nodeType": "VariableDeclaration", - "scope": 7628, + "scope": 7550, "src": "1729:80:31", "stateVariable": true, "storageLocation": "default", @@ -2009,7 +2009,7 @@ "typeString": "address" }, "typeName": { - "id": 7625, + "id": 7547, "name": "address", "nodeType": "ElementaryTypeName", "src": "1729:7:31", @@ -2022,7 +2022,7 @@ "value": { "argumentTypes": null, "hexValue": "307835656633306239393836333435323439626333326438393238423765653634444539343335453339", - "id": 7626, + "id": 7548, "isConstant": false, "isLValue": false, "isPure": true, @@ -2040,7 +2040,7 @@ "visibility": "public" } ], - "scope": 7629, + "scope": 7551, "src": "25:1787:31" } ], @@ -2054,18 +2054,12 @@ "1": { "events": {}, "links": {}, - "address": "0x3BDb8b7d03aB4299250e9B7Ef0C717c8a1fD3913", - "transactionHash": "0x1718e774ccea1f62b5358967600ab3b9af054e7213ac19782bde7b9e1a70f38a" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0xe982E462b094850F12AF94d21D470e21bE9D0E9C", - "transactionHash": "0xfa139c3f3689f78fe796375895746dc67f1f01140ec17acc3c38179467953d96" + "address": "0x584d265d2b2c221676137d930A96458B8C30199F", + "transactionHash": "0xa8fab3cf60cb10735e4584ebeb782010d81306181afd730656b5ec785e0ceb8b" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T05:45:42.992Z", + "updatedAt": "2020-04-03T06:28:59.355Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/BytesLibLite.json b/packages/smart-contracts/artifacts/BytesLibLite.json index f5dc12b..50644aa 100644 --- a/packages/smart-contracts/artifacts/BytesLibLite.json +++ b/packages/smart-contracts/artifacts/BytesLibLite.json @@ -1,9 +1,9 @@ { "contractName": "BytesLibLite", "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":\"BytesLibLite\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]}},\"version\":1}", - "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820d0044b7ea85acdd6254ef13d6dc86fb5e3b021ad771a98f2bcefbb0c8a49e88d64736f6c63430005100032", - "deployedBytecode": "0x6080604052600080fdfea265627a7a72315820d0044b7ea85acdd6254ef13d6dc86fb5e3b021ad771a98f2bcefbb0c8a49e88d64736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":\"BytesLibLite\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]}},\"version\":1}", + "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158208f5e73eebc0f3bcab9f733ab5a86fbb3c560f1665e56ba2ef551e64948db4d4d64736f6c63430005100032", + "deployedBytecode": "0x6080604052600080fdfea265627a7a723158208f5e73eebc0f3bcab9f733ab5a86fbb3c560f1665e56ba2ef551e64948db4d4d64736f6c63430005100032", "sourceMap": "144:3359:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;144:3359:14;;;;;;;", "deployedSourceMap": "144:3359:14:-;;;;;", "source": "pragma solidity 0.5.16;\n\n// https://github.com/GNSPS/solidity-bytes-utils/blob/b1b22d1e9c4de64defb811f4c65a391630f220d7/contracts/BytesLib.sol\n\ncontract BytesLibLite {\n // A lite version of the ByteLib, containing only the \"slice\" function we need\n\n function sliceToEnd(\n bytes memory _bytes,\n uint256 _start\n ) internal pure returns (bytes memory) {\n require(_start < _bytes.length, \"bytes-read-out-of-bounds\");\n\n return slice(\n _bytes,\n _start,\n _bytes.length - _start\n );\n }\n \n function slice(\n bytes memory _bytes,\n uint256 _start,\n uint256 _length\n )\n internal\n pure\n returns (bytes memory)\n {\n require(_bytes.length >= (_start + _length), \"bytes-read-out-of-bounds\");\n\n bytes memory tempBytes;\n\n assembly {\n switch iszero(_length)\n case 0 {\n // Get a location of some free memory and store it in tempBytes as\n // Solidity does for memory variables.\n tempBytes := mload(0x40)\n\n // The first word of the slice result is potentially a partial\n // word read from the original array. To read it, we calculate\n // the length of that partial word and start copying that many\n // bytes into the array. The first word we copy will start with\n // data we don't care about, but the last `lengthmod` bytes will\n // land at the beginning of the contents of the new array. When\n // we're done copying, we overwrite the full first word with\n // the actual length of the slice.\n let lengthmod := and(_length, 31)\n\n // The multiplication in the next line is necessary\n // because when slicing multiples of 32 bytes (lengthmod == 0)\n // the following copy loop was copying the origin's length\n // and then ending prematurely not copying everything it should.\n let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))\n let end := add(mc, _length)\n\n for {\n // The multiplication in the next line has the same exact purpose\n // as the one above.\n let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)\n } lt(mc, end) {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n } {\n mstore(mc, mload(cc))\n }\n\n mstore(tempBytes, _length)\n\n //update free-memory pointer\n //allocating the array padded to 32 bytes like the compiler does now\n mstore(0x40, and(add(mc, 31), not(31)))\n }\n //if we want a zero-length slice let's just return a zero-length array\n default {\n tempBytes := mload(0x40)\n\n mstore(0x40, add(tempBytes, 0x20))\n }\n }\n\n return tempBytes;\n }\n\n function bytesToAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) {\n require(_bytes.length >= (_start + 20), \"Read out of bounds\");\n address tempAddress;\n\n assembly {\n tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)\n }\n\n return tempAddress;\n }\n}\n", @@ -146,10 +146,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "382:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -572,10 +572,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "741:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1055,10 +1055,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3246:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1428,10 +1428,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "382:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1854,10 +1854,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "741:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2337,10 +2337,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3246:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2578,7 +2578,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.795Z", + "updatedAt": "2020-04-03T06:25:13.479Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/Common.json b/packages/smart-contracts/artifacts/Common.json index 734f368..8cbb251 100644 --- a/packages/smart-contracts/artifacts/Common.json +++ b/packages/smart-contracts/artifacts/Common.json @@ -27,11 +27,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"Common\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50610298806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c56167c614610030575b600080fd5b61009c6004803603606081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061009e565b005b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156100e657600080fd5b505af11580156100fa573d6000803e3d6000fd5b505050506040513d602081101561011057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b5050505050505056fea265627a7a723158204d98399b0edaaac519ea68a3349ae09ff0d508825ab256f57c96aab25a47102164736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c56167c614610030575b600080fd5b61009c6004803603606081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061009e565b005b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156100e657600080fd5b505af11580156100fa573d6000803e3d6000fd5b505050506040513d602081101561011057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b5050505050505056fea265627a7a723158204d98399b0edaaac519ea68a3349ae09ff0d508825ab256f57c96aab25a47102164736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"Common\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b506101eb806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c56167c614610030575b600080fd5b6100666004803603606081101561004657600080fd5b506001600160a01b03813581169160208101359091169060400135610068565b005b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156100a357600080fd5b505af11580156100b7573d6000803e3d6000fd5b505050506040513d60208110156100cd57600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b15801561012157600080fd5b505af1158015610135573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561019957600080fd5b505af11580156101ad573d6000803e3d6000fd5b5050505050505056fea265627a7a72315820d8b402c55dd600eed686f9277b942559808f6190a32d8196d3783e256e62253f64736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c56167c614610030575b600080fd5b6100666004803603606081101561004657600080fd5b506001600160a01b03813581169160208101359091169060400135610068565b005b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156100a357600080fd5b505af11580156100b7573d6000803e3d6000fd5b505050506040513d60208110156100cd57600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b15801561012157600080fd5b505af1158015610135573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561019957600080fd5b505af11580156101ad573d6000803e3d6000fd5b5050505050505056fea265627a7a72315820d8b402c55dd600eed686f9277b942559808f6190a32d8196d3783e256e62253f64736f6c63430005100032", "sourceMap": "2413:661:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2413:661:22;;;;;;;", - "deployedSourceMap": "2413:661:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2413:661:22;;;;;;;;;;;;;;;;;;;2663:409;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2663:409:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;2962:3;2950:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:22:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2950:22:22;;;;;;;;;;;;;;;;:30;;;2981:3;2986;2950:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:40:22;;;;3046:3;3034:21;;;3056:3;3061;3034:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3034:31:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3034:31:22;;;;2663:409;;;:::o", + "deployedSourceMap": "2413:661:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2413:661:22;;;;;;;;;;;;;;;;;;;2663:409;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2663:409:22;;;;;;;;;;;;;;;;;:::i;:::-;;;2962:3;-1:-1:-1;;;;;2950:20:22;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:22:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2950:22:22;:40;;;-1:-1:-1;;;2950:40:22;;-1:-1:-1;;;;;2950:40:22;;;;;;;;;;;;;;;:30;;;;;;;:40;;;;;-1:-1:-1;;2950:40:22;;;;;;;-1:-1:-1;2950:30:22;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;2950:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:40:22;;;;3046:3;-1:-1:-1;;;;;3034:21:22;;3056:3;3061;3034:31;;;;;;;;;;;;;-1:-1:-1;;;;;3034:31:22;-1:-1:-1;;;;;3034:31:22;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3034:31:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3034:31:22;;;;2663:409;;;:::o", "source": "pragma solidity 0.5.16;\n\nimport \"../../interfaces/IERC20.sol\";\n\n\ncontract GemLike {\n function approve(address, uint) public;\n function transfer(address, uint) public;\n function transferFrom(address, address, uint) public;\n function deposit() public payable;\n function withdraw(uint) public;\n}\n\ncontract ManagerLike {\n function cdpCan(address, uint, address) public view returns (uint);\n function ilks(uint) public view returns (bytes32);\n function owns(uint) public view returns (address);\n function urns(uint) public view returns (address);\n function vat() public view returns (address);\n function open(bytes32, address) public returns (uint);\n function give(uint, address) public;\n function cdpAllow(uint, address, uint) public;\n function urnAllow(address, uint) public;\n function frob(uint, int, int) public;\n function flux(uint, address, uint) public;\n function move(uint, address, uint) public;\n function exit(address, uint, address, uint) public;\n function quit(uint, address) public;\n function enter(address, uint) public;\n function shift(uint, uint) public;\n}\n\ncontract VatLike {\n function can(address, address) public view returns (uint);\n function ilks(bytes32) public view returns (uint, uint, uint, uint, uint);\n function dai(address) public view returns (uint);\n function urns(bytes32, address) public view returns (uint, uint);\n function frob(bytes32, address, address, address, int, int) public;\n function hope(address) public;\n function move(address, address, uint) public;\n}\n\ncontract GemJoinLike {\n function dec() public returns (uint);\n function gem() public returns (GemLike);\n function join(address, uint) public payable;\n function exit(address, uint) public;\n}\n\ncontract DaiJoinLike {\n function vat() public returns (VatLike);\n function dai() public returns (GemLike);\n function join(address, uint) public payable;\n function exit(address, uint) public;\n}\n\ncontract JugLike {\n function drip(bytes32) public returns (uint);\n}\n\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n// WARNING: These functions meant to be used as a a library for a DSProxy. Some are unsafe if you call them directly.\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\ncontract Common {\n uint256 constant RAY = 10 ** 27;\n\n // Internal functions\n\n function mul(uint x, uint y) internal pure returns (uint z) {\n require(y == 0 || (z = x * y) / y == x, \"mul-overflow\");\n }\n\n // Public functions\n\n function daiJoin_join(\n address apt,\n address urn,\n uint wad\n ) public {\n // DAI Already flashloaned\n // DaiJoinLike(apt).dai().transferFrom(dacProxyAddress, dedgeMakerManagerAddress, wad);\n // Approves adapter to take the DAI amount\n DaiJoinLike(apt).dai().approve(apt, wad);\n // Joins DAI into the vat\n DaiJoinLike(apt).join(urn, wad);\n }\n}\n\ncontract DssProxyActionsBase is Common {\n // Internal functions\n\n function sub(uint x, uint y) internal pure returns (uint z) {\n require((z = x - y) <= x, \"sub-overflow\");\n }\n\n function toInt(uint x) internal pure returns (int y) {\n y = int(x);\n require(y >= 0, \"int-overflow\");\n }\n\n function toRad(uint wad) internal pure returns (uint rad) {\n rad = mul(wad, 10 ** 27);\n }\n\n function convertTo18(address gemJoin, uint256 amt) internal returns (uint256 wad) {\n // For those collaterals that have less than 18 decimals precision we need to do the conversion before passing to frob function\n // Adapters will automatically handle the difference of precision\n wad = mul(\n amt,\n 10 ** (18 - GemJoinLike(gemJoin).dec())\n );\n }\n\n function convertToGemUnits(address gemJoin, uint256 wad) internal returns (uint256 amt) {\n // For those collaterals that have less than 18 decimals precision we need to do the conversion\n amt = wad / (10 ** (18 - GemJoinLike(gemJoin).dec()));\n }\n\n function _getDrawDart(\n address vat,\n address jug,\n address urn,\n bytes32 ilk,\n uint wad\n ) internal returns (int dart) {\n // Updates stability fee rate\n uint rate = JugLike(jug).drip(ilk);\n\n // Gets DAI balance of the urn in the vat\n uint dai = VatLike(vat).dai(urn);\n\n // If there was already enough DAI in the vat balance, just exits it without adding more debt\n if (dai < mul(wad, RAY)) {\n // Calculates the needed dart so together with the existing dai in the vat is enough to exit wad amount of DAI tokens\n dart = toInt(sub(mul(wad, RAY), dai) / rate);\n // This is neeeded due lack of precision. It might need to sum an extra dart wei (for the given DAI wad amount)\n dart = mul(uint(dart), rate) < mul(wad, RAY) ? dart + 1 : dart;\n }\n }\n\n function _getWipeAllWad(\n address vat,\n address usr,\n address urn,\n bytes32 ilk\n ) internal view returns (uint wad) {\n // Gets actual rate from the vat\n (, uint rate,,,) = VatLike(vat).ilks(ilk);\n // Gets actual art value of the urn\n (, uint art) = VatLike(vat).urns(ilk, urn);\n // Gets actual dai amount in the urn\n uint dai = VatLike(vat).dai(usr);\n\n uint rad = sub(mul(art, rate), dai);\n wad = rad / RAY;\n\n // If the rad precision has some dust, it will need to request for 1 extra wad wei\n wad = mul(wad, RAY) < rad ? wad + 1 : wad;\n }\n\n function open(\n address manager,\n bytes32 ilk,\n address usr\n ) public returns (uint cdp) {\n cdp = ManagerLike(manager).open(ilk, usr);\n }\n\n function give(\n address manager,\n uint cdp,\n address usr\n ) public {\n ManagerLike(manager).give(cdp, usr);\n }\n\n function cdpAllow(\n address manager,\n uint cdp,\n address usr,\n uint ok\n ) public {\n ManagerLike(manager).cdpAllow(cdp, usr, ok);\n }\n\n function flux(\n address manager,\n uint cdp,\n address dst,\n uint wad\n ) public {\n ManagerLike(manager).flux(cdp, dst, wad);\n }\n\n function frob(\n address manager,\n uint cdp,\n int dink,\n int dart\n ) public {\n ManagerLike(manager).frob(cdp, dink, dart);\n }\n\n function wipeAllAndFreeETH(\n address manager,\n address ethJoin,\n address daiJoin,\n uint cdp,\n uint wadC\n ) public {\n address vat = ManagerLike(manager).vat();\n address urn = ManagerLike(manager).urns(cdp);\n bytes32 ilk = ManagerLike(manager).ilks(cdp);\n (, uint art) = VatLike(vat).urns(ilk, urn);\n\n // Joins DAI amount into the vat\n daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk));\n // Paybacks debt to the CDP and unlocks WETH amount from it\n frob(\n manager,\n cdp,\n -toInt(wadC),\n -int(art)\n );\n // Moves the amount from the CDP urn to proxy's address\n flux(manager, cdp, address(this), wadC);\n // Exits WETH amount to proxy address as a token\n GemJoinLike(ethJoin).exit(address(this), wadC);\n // Converts WETH to ETH\n GemJoinLike(ethJoin).gem().withdraw(wadC);\n // Sends ETH back to the user's wallet\n // msg.sender.transfer(wadC);\n }\n\n function wipeAllAndFreeGem(\n address manager,\n address gemJoin,\n address daiJoin,\n uint cdp,\n uint wadC\n ) public {\n address vat = ManagerLike(manager).vat();\n address urn = ManagerLike(manager).urns(cdp);\n bytes32 ilk = ManagerLike(manager).ilks(cdp);\n (, uint art) = VatLike(vat).urns(ilk, urn);\n\n // Joins DAI amount into the vat\n daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk));\n uint wad18 = convertTo18(gemJoin, wadC);\n // Paybacks debt to the CDP and unlocks token amount from it\n frob(\n manager,\n cdp,\n -toInt(wad18),\n -int(art)\n );\n // Moves the amount from the CDP urn to proxy's address\n flux(manager, cdp, address(this), wad18);\n // Exits token amount to the user's wallet as a token\n GemJoinLike(gemJoin).exit(address(this), wadC);\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol", "ast": { @@ -3894,10 +3894,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4627,10 +4627,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4940,10 +4940,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10513,7 +10513,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -10630,7 +10630,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12161,7 +12161,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12278,7 +12278,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -16454,10 +16454,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17187,10 +17187,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17500,10 +17500,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23073,7 +23073,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -23190,7 +23190,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24721,7 +24721,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24838,7 +24838,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25160,7 +25160,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.844Z", + "updatedAt": "2020-04-03T06:25:13.529Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/CompoundBase.json b/packages/smart-contracts/artifacts/CompoundBase.json index 4023b2b..35b20a7 100644 --- a/packages/smart-contracts/artifacts/CompoundBase.json +++ b/packages/smart-contracts/artifacts/CompoundBase.json @@ -376,11 +376,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveCToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"approveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrowThroughProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarketsAndApproveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalfThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"supplyCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"borrowCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"supplyETH\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyETHAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":\"CompoundBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":{\"keccak256\":\"0xfe69c2a9adaca0cdcfb06df5a2a2d99b5fd2d507e85379d7e412e218c523583a\",\"urls\":[\"bzz-raw://525284cba89cdd1c6b146ec5774e284b6b0af8639cfad96c059e700a9e727ca2\",\"dweb:/ipfs/QmSBBvdmCWkfFscFKWK6oMYL7F4HQ2aZPxJhEX5p3W4ivp\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50611f00806100206000396000f3fe6080604052600436106101145760003560e01c806375d40945116100a0578063ba59154f11610064578063ba59154f1461068b578063c2998238146106d9578063d2f70c401461079e578063d882dc6c146107f9578063f2b9fdb81461084757610114565b806375d40945146104ae5780637720cc871461052657806396294178146105945780639a22a1b9146105e2578063abdb5ea81461063d57610114565b806341ec5cc4116100e757806341ec5cc41461033f5780634907b8fc1461038d5780634b8a35291461039757806359086a5e146103f257806367600cc21461046057610114565b80630b4e0630146101195780631e9a6950146101675780632d8af543146101b55780633dc4d99a1461027a575b600080fd5b6101656004803603604081101561012f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610895565b005b6101b36004803603604081101561017d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a85565b005b3480156101c157600080fd5b50610278600480360360208110156101d857600080fd5b81019080803590602001906401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184602083028401116401000000008311171561022957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b8c565b005b34801561028657600080fd5b5061033d6004803603602081101561029d57600080fd5b81019080803590602001906401000000008111156102ba57600080fd5b8201836020820111156102cc57600080fd5b803590602001918460208302840111640100000000831117156102ee57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ba1565b005b61038b6004803603604081101561035557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c59565b005b610395610c6f565b005b3480156103a357600080fd5b506103f0600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce6565b005b61045e6004803603606081101561040857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ded565b005b6104ac6004803603604081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ffc565b005b610524600480360360808110156104c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611015565b005b6105926004803603606081101561053c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061102f565b005b6105e0600480360360408110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611093565b005b3480156105ee57600080fd5b5061063b6004803603604081101561060557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117d565b005b6106896004803603604081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611196565b005b6106d7600480360360408110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611356565b005b3480156106e557600080fd5b5061079c600480360360208110156106fc57600080fd5b810190808035906020019064010000000081111561071957600080fd5b82018360208201111561072b57600080fd5b8035906020019184602083028401116401000000008311171561074d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506113b8565b005b3480156107aa57600080fd5b506107f7600480360360408110156107c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e3565b005b6108456004803603604081101561080f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a8565b005b6108936004803603604081101561085d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c1565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b81019080805190602001909291905050509050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109a5576109a433308585611995565b5b6109af83836117c1565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d6020811015610a5857600080fd5b81019080805190602001909291905050509050610a7f8433610a7a8486611b89565b611c12565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610ada57600080fd5b505af1158015610aee573d6000803e3d6000fd5b505050506040513d6020811015610b0457600080fd5b810190808051906020019092919050505014610b88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c6564000081525060200191505060405180910390fd5b5050565b610b95816113b8565b610b9e81610ba1565b50565b60008090505b8151811015610c5557734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610be757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c4857610c47828281518110610c1957fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115e3565b5b8080600101915050610ba7565b5050565b610c61610c6f565b610c6b8282610ce6565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3b57600080fd5b505af1158015610d4f573d6000803e3d6000fd5b505050506040513d6020811015610d6557600080fd5b810190808051906020019092919050505014610de9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c6564000081525060200191505060405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed2578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610eb457600080fd5b505af1158015610ec8573d6000803e3d6000fd5b5050505050610ff7565b610edc82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050506040513d6020811015610f8f57600080fd5b810190808051906020019092919050505014610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611ea96023913960400191505060405180910390fd5b5b505050565b6110068282611093565b611011823383611c12565b5050565b61101f84846117c1565b6110298282610ce6565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110835761108233308484611995565b5b61108e838383610ded565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156110e857600080fd5b505af11580156110fc573d6000803e3d6000fd5b505050506040513d602081101561111257600080fd5b810190808051906020019092919050505014611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e806029913960400191505060405180910390fd5b5050565b6111878282610ce6565b611192823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b5050505050611352565b61124e82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156112a357600080fd5b505af11580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b810190808051906020019092919050505014611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c656400000081525060200191505060405180910390fd5b5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113aa576113a933308484611995565b5b6113b48282611196565b5050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b8381101561143d578082015181840152602081019050611422565b5050505090500192505050600060405180830381600087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156114a057600080fd5b81019080805160405193929190846401000000008211156114c057600080fd5b838201915060208201858111156114d657600080fd5b82518660208202830111640100000000821117156114f357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561152a57808201518184015260208101905061150f565b50505050905001604052505050905060008090505b81518110156115de57600082828151811061155657fe5b6020026020010151146115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c6564000081525060200191505060405180910390fd5b808060010191505061153f565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561162b57600080fd5b505afa15801561163f573d6000803e3d6000fd5b505050506040513d602081101561165557600080fd5b81019080805190602001909291905050509050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b505050506040513d602081101561171d57600080fd5b81019080805190602001909291905050501515146117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c656481525060200191505060405180910390fd5b505050565b6117b28282610a85565b6117bd823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561188357734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561186557600080fd5b505af1158015611879573d6000803e3d6000fd5b5050505050611991565b61188d82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b505050506040513d602081101561190c57600080fd5b810190808051906020019092919050505014611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c6564000081525060200191505060405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d6020811015611a0757600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ad557600080fd5b505af1158015611ae9573d6000803e3d6000fd5b505050506040513d6020811015611aff57600080fd5b8101908080519060200190929190505050611b82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c6564000081525060200191505060405180910390fd5b5050505050565b600082821115611c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736166652d6d6174682d7375622d6661696c656400000000000000000000000081525060200191505060405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc5578173ffffffffffffffffffffffffffffffffffffffff168160405180600001905060006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b505050611e7a565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611d0b57600080fd5b505afa158015611d1f573d6000803e3d6000fd5b505050506040513d6020811015611d3557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611dcc57600080fd5b505af1158015611de0573d6000803e3d6000fd5b505050506040513d6020811015611df657600080fd5b8101908080519060200190929190505050611e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f636d706e642d6d67722d7472616e736665722d6661696c65640000000000000081525060200191505060405180910390fd5b5b50505056fe636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661696c6564a265627a7a72315820a9bfd97733a10b91a2f559cf6f93219aa428226cf05b80e0f3cb5e67c61129eb64736f6c63430005100032", - "deployedBytecode": "0x6080604052600436106101145760003560e01c806375d40945116100a0578063ba59154f11610064578063ba59154f1461068b578063c2998238146106d9578063d2f70c401461079e578063d882dc6c146107f9578063f2b9fdb81461084757610114565b806375d40945146104ae5780637720cc871461052657806396294178146105945780639a22a1b9146105e2578063abdb5ea81461063d57610114565b806341ec5cc4116100e757806341ec5cc41461033f5780634907b8fc1461038d5780634b8a35291461039757806359086a5e146103f257806367600cc21461046057610114565b80630b4e0630146101195780631e9a6950146101675780632d8af543146101b55780633dc4d99a1461027a575b600080fd5b6101656004803603604081101561012f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610895565b005b6101b36004803603604081101561017d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a85565b005b3480156101c157600080fd5b50610278600480360360208110156101d857600080fd5b81019080803590602001906401000000008111156101f557600080fd5b82018360208201111561020757600080fd5b8035906020019184602083028401116401000000008311171561022957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b8c565b005b34801561028657600080fd5b5061033d6004803603602081101561029d57600080fd5b81019080803590602001906401000000008111156102ba57600080fd5b8201836020820111156102cc57600080fd5b803590602001918460208302840111640100000000831117156102ee57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ba1565b005b61038b6004803603604081101561035557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c59565b005b610395610c6f565b005b3480156103a357600080fd5b506103f0600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce6565b005b61045e6004803603606081101561040857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ded565b005b6104ac6004803603604081101561047657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ffc565b005b610524600480360360808110156104c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611015565b005b6105926004803603606081101561053c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061102f565b005b6105e0600480360360408110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611093565b005b3480156105ee57600080fd5b5061063b6004803603604081101561060557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061117d565b005b6106896004803603604081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611196565b005b6106d7600480360360408110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611356565b005b3480156106e557600080fd5b5061079c600480360360208110156106fc57600080fd5b810190808035906020019064010000000081111561071957600080fd5b82018360208201111561072b57600080fd5b8035906020019184602083028401116401000000008311171561074d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506113b8565b005b3480156107aa57600080fd5b506107f7600480360360408110156107c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115e3565b005b6108456004803603604081101561080f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a8565b005b6108936004803603604081101561085d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c1565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b81019080805190602001909291905050509050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109a5576109a433308585611995565b5b6109af83836117c1565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d6020811015610a5857600080fd5b81019080805190602001909291905050509050610a7f8433610a7a8486611b89565b611c12565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610ada57600080fd5b505af1158015610aee573d6000803e3d6000fd5b505050506040513d6020811015610b0457600080fd5b810190808051906020019092919050505014610b88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c6564000081525060200191505060405180910390fd5b5050565b610b95816113b8565b610b9e81610ba1565b50565b60008090505b8151811015610c5557734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610be757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c4857610c47828281518110610c1957fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115e3565b5b8080600101915050610ba7565b5050565b610c61610c6f565b610c6b8282610ce6565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3b57600080fd5b505af1158015610d4f573d6000803e3d6000fd5b505050506040513d6020811015610d6557600080fd5b810190808051906020019092919050505014610de9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c6564000081525060200191505060405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed2578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b158015610eb457600080fd5b505af1158015610ec8573d6000803e3d6000fd5b5050505050610ff7565b610edc82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050506040513d6020811015610f8f57600080fd5b810190808051906020019092919050505014610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611ea96023913960400191505060405180910390fd5b5b505050565b6110068282611093565b611011823383611c12565b5050565b61101f84846117c1565b6110298282610ce6565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110835761108233308484611995565b5b61108e838383610ded565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156110e857600080fd5b505af11580156110fc573d6000803e3d6000fd5b505050506040513d602081101561111257600080fd5b810190808051906020019092919050505014611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611e806029913960400191505060405180910390fd5b5050565b6111878282610ce6565b611192823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b5050505050611352565b61124e82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156112a357600080fd5b505af11580156112b7573d6000803e3d6000fd5b505050506040513d60208110156112cd57600080fd5b810190808051906020019092919050505014611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c656400000081525060200191505060405180910390fd5b5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113aa576113a933308484611995565b5b6113b48282611196565b5050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b8381101561143d578082015181840152602081019050611422565b5050505090500192505050600060405180830381600087803b15801561146257600080fd5b505af1158015611476573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156114a057600080fd5b81019080805160405193929190846401000000008211156114c057600080fd5b838201915060208201858111156114d657600080fd5b82518660208202830111640100000000821117156114f357600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561152a57808201518184015260208101905061150f565b50505050905001604052505050905060008090505b81518110156115de57600082828151811061155657fe5b6020026020010151146115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c6564000081525060200191505060405180910390fd5b808060010191505061153f565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561162b57600080fd5b505afa15801561163f573d6000803e3d6000fd5b505050506040513d602081101561165557600080fd5b81019080805190602001909291905050509050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116f357600080fd5b505af1158015611707573d6000803e3d6000fd5b505050506040513d602081101561171d57600080fd5b81019080805190602001909291905050501515146117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c656481525060200191505060405180910390fd5b505050565b6117b28282610a85565b6117bd823383611c12565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561188357734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561186557600080fd5b505af1158015611879573d6000803e3d6000fd5b5050505050611991565b61188d82826115e3565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b505050506040513d602081101561190c57600080fd5b810190808051906020019092919050505014611990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c6564000081525060200191505060405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119dd57600080fd5b505afa1580156119f1573d6000803e3d6000fd5b505050506040513d6020811015611a0757600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ad557600080fd5b505af1158015611ae9573d6000803e3d6000fd5b505050506040513d6020811015611aff57600080fd5b8101908080519060200190929190505050611b82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c6564000081525060200191505060405180910390fd5b5050505050565b600082821115611c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736166652d6d6174682d7375622d6661696c656400000000000000000000000081525060200191505060405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc5578173ffffffffffffffffffffffffffffffffffffffff168160405180600001905060006040518083038185875af1925050503d8060008114611cb8576040519150601f19603f3d011682016040523d82523d6000602084013e611cbd565b606091505b505050611e7a565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611d0b57600080fd5b505afa158015611d1f573d6000803e3d6000fd5b505050506040513d6020811015611d3557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611dcc57600080fd5b505af1158015611de0573d6000803e3d6000fd5b505050506040513d6020811015611df657600080fd5b8101908080519060200190929190505050611e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f636d706e642d6d67722d7472616e736665722d6661696c65640000000000000081525060200191505060405180910390fd5b5b50505056fe636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661696c6564a265627a7a72315820a9bfd97733a10b91a2f559cf6f93219aa428226cf05b80e0f3cb5e67c61129eb64736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveCToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"approveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrowThroughProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarketsAndApproveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalfThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"supplyCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"borrowCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"supplyETH\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyETHAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":\"CompoundBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":{\"keccak256\":\"0xfe69c2a9adaca0cdcfb06df5a2a2d99b5fd2d507e85379d7e412e218c523583a\",\"urls\":[\"bzz-raw://525284cba89cdd1c6b146ec5774e284b6b0af8639cfad96c059e700a9e727ca2\",\"dweb:/ipfs/QmSBBvdmCWkfFscFKWK6oMYL7F4HQ2aZPxJhEX5p3W4ivp\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5061161e806100206000396000f3fe6080604052600436106101145760003560e01c806375d40945116100a0578063ba59154f11610064578063ba59154f1461049f578063c2998238146104cb578063d2f70c4014610579578063d882dc6c146105b2578063f2b9fdb8146105de57610114565b806375d409451461039e5780637720cc87146103d8578063962941781461040e5780639a22a1b91461043a578063abdb5ea81461047357610114565b806341ec5cc4116100e757806341ec5cc4146102cf5780634907b8fc146102fb5780634b8a35291461030357806359086a5e1461033c57806367600cc21461037257610114565b80630b4e0630146101195780631e9a6950146101475780632d8af543146101735780633dc4d99a14610221575b600080fd5b6101456004803603604081101561012f57600080fd5b506001600160a01b03813516906020013561060a565b005b6101456004803603604081101561015d57600080fd5b506001600160a01b03813516906020013561074e565b34801561017f57600080fd5b506101456004803603602081101561019657600080fd5b810190602081018135600160201b8111156101b057600080fd5b8201836020820111156101c257600080fd5b803590602001918460208302840111600160201b831117156101e357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610816945050505050565b34801561022d57600080fd5b506101456004803603602081101561024457600080fd5b810190602081018135600160201b81111561025e57600080fd5b82018360208201111561027057600080fd5b803590602001918460208302840111600160201b8311171561029157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061082b945050505050565b610145600480360360408110156102e557600080fd5b506001600160a01b03813516906020013561089e565b6101456108b0565b34801561030f57600080fd5b506101456004803603604081101561032657600080fd5b506001600160a01b03813516906020013561091a565b6101456004803603606081101561035257600080fd5b506001600160a01b038135811691602081013590911690604001356109de565b6101456004803603604081101561038857600080fd5b506001600160a01b038135169060200135610b50565b610145600480360360808110156103b457600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610b65565b610145600480360360608110156103ee57600080fd5b506001600160a01b03813581169160208101359091169060400135610b79565b6101456004803603604081101561042457600080fd5b506001600160a01b038135169060200135610bb4565b34801561044657600080fd5b506101456004803603604081101561045d57600080fd5b506001600160a01b038135169060200135610c62565b6101456004803603604081101561048957600080fd5b506001600160a01b038135169060200135610c6c565b610145600480360360408110156104b557600080fd5b506001600160a01b038135169060200135610db8565b3480156104d757600080fd5b50610145600480360360208110156104ee57600080fd5b810190602081018135600160201b81111561050857600080fd5b82018360208201111561051a57600080fd5b803590602001918460208302840111600160201b8311171561053b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610df2945050505050565b34801561058557600080fd5b506101456004803603604081101561059c57600080fd5b506001600160a01b038135169060200135610fcc565b610145600480360360408110156105c857600080fd5b506001600160a01b03813516906020013561110b565b610145600480360360408110156105f457600080fd5b506001600160a01b038135169060200135611115565b604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b15801561065457600080fd5b505afa158015610668573d6000803e3d6000fd5b505050506040513d602081101561067e57600080fd5b505190506001600160a01b038316734ddc2d193948926d02f9b1fe9e1daa0718270ed5146106b2576106b233308585611257565b6106bc8383611115565b604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561070657600080fd5b505afa15801561071a573d6000803e3d6000fd5b505050506040513d602081101561073057600080fd5b5051905061074884336107438486611399565b6113ed565b50505050565b816001600160a01b031663db006a75826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561079457600080fd5b505af11580156107a8573d6000803e3d6000fd5b505050506040513d60208110156107be57600080fd5b505115610812576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c65640000604482015290519081900360640190fd5b5050565b61081f81610df2565b6108288161082b565b50565b60005b815181101561081257734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b031682828151811061086157fe5b60200260200101516001600160a01b0316146108965761089682828151811061088657fe5b6020026020010151600019610fcc565b60010161082e565b6108a66108b0565b610812828261091a565b734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108ff57600080fd5b505af1158015610913573d6000803e3d6000fd5b5050505050565b816001600160a01b031663c5ebeaec826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561096057600080fd5b505af1158015610974573d6000803e3d6000fd5b505050506040513d602081101561098a57600080fd5b505115610812576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c65640000604482015290519081900360640190fd5b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed51415610a7957816001600160a01b031663e597461982856040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506000604051808303818588803b158015610a5b57600080fd5b505af1158015610a6f573d6000803e3d6000fd5b5050505050610b4b565b610a838282610fcc565b816001600160a01b0316632608f81884836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b505115610b4b5760405162461bcd60e51b81526004018080602001828103825260238152602001806115c76023913960400191505060405180910390fd5b505050565b610b5a8282610bb4565b6108128233836113ed565b610b6f8484611115565b610748828261091a565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed514610ba957610ba933308484611257565b610b4b8383836109de565b816001600160a01b031663852a12e3826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610bfa57600080fd5b505af1158015610c0e573d6000803e3d6000fd5b505050506040513d6020811015610c2457600080fd5b5051156108125760405162461bcd60e51b815260040180806020018281038252602981526020018061159e6029913960400191505060405180910390fd5b610b5a828261091a565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed51415610cea57816001600160a01b0316634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b5050505050610812565b610cf48282610fcc565b816001600160a01b0316630e752702826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3a57600080fd5b505af1158015610d4e573d6000803e3d6000fd5b505050506040513d6020811015610d6457600080fd5b505115610812576040805162461bcd60e51b815260206004820152601d60248201527f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c6564000000604482015290519081900360640190fd5b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed514610de857610de833308484611257565b6108128282610c6c565b604051631853304760e31b8152602060048201818152835160248401528351606093733d9819210a31b4961b30ef54be2aed79b9c9cd3b9363c299823893879390928392604490910191818601910280838360005b83811015610e5f578181015183820152602001610e47565b5050505090500192505050600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610ec157600080fd5b8101908080516040519392919084600160201b821115610ee057600080fd5b908301906020820185811115610ef557600080fd5b82518660208202830111600160201b82111715610f1157600080fd5b82525081516020918201928201910280838360005b83811015610f3e578181015183820152602001610f26565b50505050905001604052505050905060008090505b8151811015610b4b57818181518110610f6857fe5b6020026020010151600014610fc4576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c65640000604482015290519081900360640190fd5b600101610f53565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561100757600080fd5b505afa15801561101b573d6000803e3d6000fd5b505050506040513d602081101561103157600080fd5b50516040805163095ea7b360e01b81526001600160a01b0386811660048301526024820186905291519293509083169163095ea7b3916044808201926020929091908290030181600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b505050506040513d60208110156110b357600080fd5b50511515600114610b4b576040805162461bcd60e51b815260206004820181905260248201527f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c6564604482015290519081900360640190fd5b610b5a828261074e565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed5141561118957734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccc57600080fd5b6111938282610fcc565b816001600160a01b031663a0712d68826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156111d957600080fd5b505af11580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b505115610812576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c65640000604482015290519081900360640190fd5b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561129257600080fd5b505afa1580156112a6573d6000803e3d6000fd5b505050506040513d60208110156112bc57600080fd5b5051604080516323b872dd60e01b81526001600160a01b0388811660048301528781166024830152604482018690529151929350908316916323b872dd916064808201926020929091908290030181600087803b15801561131c57600080fd5b505af1158015611330573d6000803e3d6000fd5b505050506040513d602081101561134657600080fd5b5051610913576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c65640000604482015290519081900360640190fd5b6000828211156113e7576040805162461bcd60e51b81526020600482015260146024820152731cd859994b5b585d1a0b5cdd588b59985a5b195960621b604482015290519081900360640190fd5b50900390565b6001600160a01b038316734ddc2d193948926d02f9b1fe9e1daa0718270ed51415611468576040516001600160a01b038316908290600081818185875af1925050503d806000811461145b576040519150601f19603f3d011682016040523d82523d6000602084013e611460565b606091505b505050610b4b565b826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a157600080fd5b505afa1580156114b5573d6000803e3d6000fd5b505050506040513d60208110156114cb57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561152057600080fd5b505af1158015611534573d6000803e3d6000fd5b505050506040513d602081101561154a57600080fd5b5051610b4b576040805162461bcd60e51b815260206004820152601960248201527f636d706e642d6d67722d7472616e736665722d6661696c656400000000000000604482015290519081900360640190fdfe636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661696c6564a265627a7a723158203217e4f53f5e7c7d8d094eeccc556c9eb1c0e5f63f3de1d1294da92934e4467b64736f6c63430005100032", + "deployedBytecode": "0x6080604052600436106101145760003560e01c806375d40945116100a0578063ba59154f11610064578063ba59154f1461049f578063c2998238146104cb578063d2f70c4014610579578063d882dc6c146105b2578063f2b9fdb8146105de57610114565b806375d409451461039e5780637720cc87146103d8578063962941781461040e5780639a22a1b91461043a578063abdb5ea81461047357610114565b806341ec5cc4116100e757806341ec5cc4146102cf5780634907b8fc146102fb5780634b8a35291461030357806359086a5e1461033c57806367600cc21461037257610114565b80630b4e0630146101195780631e9a6950146101475780632d8af543146101735780633dc4d99a14610221575b600080fd5b6101456004803603604081101561012f57600080fd5b506001600160a01b03813516906020013561060a565b005b6101456004803603604081101561015d57600080fd5b506001600160a01b03813516906020013561074e565b34801561017f57600080fd5b506101456004803603602081101561019657600080fd5b810190602081018135600160201b8111156101b057600080fd5b8201836020820111156101c257600080fd5b803590602001918460208302840111600160201b831117156101e357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610816945050505050565b34801561022d57600080fd5b506101456004803603602081101561024457600080fd5b810190602081018135600160201b81111561025e57600080fd5b82018360208201111561027057600080fd5b803590602001918460208302840111600160201b8311171561029157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061082b945050505050565b610145600480360360408110156102e557600080fd5b506001600160a01b03813516906020013561089e565b6101456108b0565b34801561030f57600080fd5b506101456004803603604081101561032657600080fd5b506001600160a01b03813516906020013561091a565b6101456004803603606081101561035257600080fd5b506001600160a01b038135811691602081013590911690604001356109de565b6101456004803603604081101561038857600080fd5b506001600160a01b038135169060200135610b50565b610145600480360360808110156103b457600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610b65565b610145600480360360608110156103ee57600080fd5b506001600160a01b03813581169160208101359091169060400135610b79565b6101456004803603604081101561042457600080fd5b506001600160a01b038135169060200135610bb4565b34801561044657600080fd5b506101456004803603604081101561045d57600080fd5b506001600160a01b038135169060200135610c62565b6101456004803603604081101561048957600080fd5b506001600160a01b038135169060200135610c6c565b610145600480360360408110156104b557600080fd5b506001600160a01b038135169060200135610db8565b3480156104d757600080fd5b50610145600480360360208110156104ee57600080fd5b810190602081018135600160201b81111561050857600080fd5b82018360208201111561051a57600080fd5b803590602001918460208302840111600160201b8311171561053b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610df2945050505050565b34801561058557600080fd5b506101456004803603604081101561059c57600080fd5b506001600160a01b038135169060200135610fcc565b610145600480360360408110156105c857600080fd5b506001600160a01b03813516906020013561110b565b610145600480360360408110156105f457600080fd5b506001600160a01b038135169060200135611115565b604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b15801561065457600080fd5b505afa158015610668573d6000803e3d6000fd5b505050506040513d602081101561067e57600080fd5b505190506001600160a01b038316734ddc2d193948926d02f9b1fe9e1daa0718270ed5146106b2576106b233308585611257565b6106bc8383611115565b604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561070657600080fd5b505afa15801561071a573d6000803e3d6000fd5b505050506040513d602081101561073057600080fd5b5051905061074884336107438486611399565b6113ed565b50505050565b816001600160a01b031663db006a75826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561079457600080fd5b505af11580156107a8573d6000803e3d6000fd5b505050506040513d60208110156107be57600080fd5b505115610812576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c65640000604482015290519081900360640190fd5b5050565b61081f81610df2565b6108288161082b565b50565b60005b815181101561081257734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b031682828151811061086157fe5b60200260200101516001600160a01b0316146108965761089682828151811061088657fe5b6020026020010151600019610fcc565b60010161082e565b6108a66108b0565b610812828261091a565b734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108ff57600080fd5b505af1158015610913573d6000803e3d6000fd5b5050505050565b816001600160a01b031663c5ebeaec826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561096057600080fd5b505af1158015610974573d6000803e3d6000fd5b505050506040513d602081101561098a57600080fd5b505115610812576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c65640000604482015290519081900360640190fd5b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed51415610a7957816001600160a01b031663e597461982856040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506000604051808303818588803b158015610a5b57600080fd5b505af1158015610a6f573d6000803e3d6000fd5b5050505050610b4b565b610a838282610fcc565b816001600160a01b0316632608f81884836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610ae357600080fd5b505af1158015610af7573d6000803e3d6000fd5b505050506040513d6020811015610b0d57600080fd5b505115610b4b5760405162461bcd60e51b81526004018080602001828103825260238152602001806115c76023913960400191505060405180910390fd5b505050565b610b5a8282610bb4565b6108128233836113ed565b610b6f8484611115565b610748828261091a565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed514610ba957610ba933308484611257565b610b4b8383836109de565b816001600160a01b031663852a12e3826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610bfa57600080fd5b505af1158015610c0e573d6000803e3d6000fd5b505050506040513d6020811015610c2457600080fd5b5051156108125760405162461bcd60e51b815260040180806020018281038252602981526020018061159e6029913960400191505060405180910390fd5b610b5a828261091a565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed51415610cea57816001600160a01b0316634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b5050505050610812565b610cf48282610fcc565b816001600160a01b0316630e752702826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3a57600080fd5b505af1158015610d4e573d6000803e3d6000fd5b505050506040513d6020811015610d6457600080fd5b505115610812576040805162461bcd60e51b815260206004820152601d60248201527f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c6564000000604482015290519081900360640190fd5b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed514610de857610de833308484611257565b6108128282610c6c565b604051631853304760e31b8152602060048201818152835160248401528351606093733d9819210a31b4961b30ef54be2aed79b9c9cd3b9363c299823893879390928392604490910191818601910280838360005b83811015610e5f578181015183820152602001610e47565b5050505090500192505050600060405180830381600087803b158015610e8457600080fd5b505af1158015610e98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610ec157600080fd5b8101908080516040519392919084600160201b821115610ee057600080fd5b908301906020820185811115610ef557600080fd5b82518660208202830111600160201b82111715610f1157600080fd5b82525081516020918201928201910280838360005b83811015610f3e578181015183820152602001610f26565b50505050905001604052505050905060008090505b8151811015610b4b57818181518110610f6857fe5b6020026020010151600014610fc4576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c65640000604482015290519081900360640190fd5b600101610f53565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561100757600080fd5b505afa15801561101b573d6000803e3d6000fd5b505050506040513d602081101561103157600080fd5b50516040805163095ea7b360e01b81526001600160a01b0386811660048301526024820186905291519293509083169163095ea7b3916044808201926020929091908290030181600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b505050506040513d60208110156110b357600080fd5b50511515600114610b4b576040805162461bcd60e51b815260206004820181905260248201527f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c6564604482015290519081900360640190fd5b610b5a828261074e565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed5141561118957734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ccc57600080fd5b6111938282610fcc565b816001600160a01b031663a0712d68826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156111d957600080fd5b505af11580156111ed573d6000803e3d6000fd5b505050506040513d602081101561120357600080fd5b505115610812576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c65640000604482015290519081900360640190fd5b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561129257600080fd5b505afa1580156112a6573d6000803e3d6000fd5b505050506040513d60208110156112bc57600080fd5b5051604080516323b872dd60e01b81526001600160a01b0388811660048301528781166024830152604482018690529151929350908316916323b872dd916064808201926020929091908290030181600087803b15801561131c57600080fd5b505af1158015611330573d6000803e3d6000fd5b505050506040513d602081101561134657600080fd5b5051610913576040805162461bcd60e51b815260206004820152601e60248201527f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c65640000604482015290519081900360640190fd5b6000828211156113e7576040805162461bcd60e51b81526020600482015260146024820152731cd859994b5b585d1a0b5cdd588b59985a5b195960621b604482015290519081900360640190fd5b50900390565b6001600160a01b038316734ddc2d193948926d02f9b1fe9e1daa0718270ed51415611468576040516001600160a01b038316908290600081818185875af1925050503d806000811461145b576040519150601f19603f3d011682016040523d82523d6000602084013e611460565b606091505b505050610b4b565b826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a157600080fd5b505afa1580156114b5573d6000803e3d6000fd5b505050506040513d60208110156114cb57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561152057600080fd5b505af1158015611534573d6000803e3d6000fd5b505050506040513d602081101561154a57600080fd5b5051610b4b576040805162461bcd60e51b815260206004820152601960248201527f636d706e642d6d67722d7472616e736665722d6661696c656400000000000000604482015290519081900360640190fdfe636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79696e672d6661696c6564636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661696c6564a265627a7a723158203217e4f53f5e7c7d8d094eeccc556c9eb1c0e5f63f3de1d1294da92934e4467b64736f6c63430005100032", "sourceMap": "343:6695:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;343:6695:16;;;;;;;", - "deployedSourceMap": "343:6695:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:690;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5264:690:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4686:167;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4686:167:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2581:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2581:157:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2581:157:16;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2581:157:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2581:157:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2581:157:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2581:157:16;;;;;;;;;;;;;;;:::i;:::-;;2252:323;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2252:323:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2252:323:16;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2252:323:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2252:323:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2252:323:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2252:323:16;;;;;;;;;;;;;;;:::i;:::-;;3710:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3710:227:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2744:99;;;:::i;:::-;;3284:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3284:159:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3284:159:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4283:397;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4283:397:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6836:200;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6836:200:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3449:255;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3449:255:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6206:282;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6206:282:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4859:198;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4859:198:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6494:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6494:150:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6494:150:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3943:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3943:334:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5960:240;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5960:240:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1466:429;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1466:429:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1466:429:16;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1466:429:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1466:429:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1466:429:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1466:429:16;;;;;;;;;;;;;;;:::i;:::-;;1901:345;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1901:345:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1901:345:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6650:180;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6650:180:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2849:429;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2849:429:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5264:690;5407:15;5433:6;5425:25;;;5459:4;5425:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5425:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5425:40:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5425:40:16;;;;;;;;;;;;;;;;5407:58;;498:42;5639:23;;:6;:23;;;5635:110;;5678:56;5692:10;5712:4;5719:6;5727;5678:13;:56::i;:::-;5635:110;5754:22;5761:6;5769;5754;:22::i;:::-;5824:13;5848:6;5840:25;;;5874:4;5840:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5840:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5840:40:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5840:40:16;;;;;;;;;;;;;;;;5824:56;;5891;5901:6;5909:10;5921:25;5925:8;5935:10;5921:3;:25::i;:::-;5891:9;:56::i;:::-;5264:690;;;;:::o;4686:167::-;4810:1;4778:6;4770:22;;;4793:12;4770:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4770:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4770:36:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4770:36:16;;;;;;;;;;;;;;;;:41;4762:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4686:167;;:::o;2581:157::-;2677:21;2690:7;2677:12;:21::i;:::-;2708:23;2723:7;2708:14;:23::i;:::-;2581:157;:::o;2252:323::-;2362:6;2371:1;2362:10;;2357:212;2378:7;:14;2374:1;:18;2357:212;;;498:42;2462:27;;:7;2470:1;2462:10;;;;;;;;;;;;;;:27;;;2458:101;;2509:35;2523:7;2531:1;2523:10;;;;;;;;;;;;;;2540:2;2509:13;:35::i;:::-;2458:101;2394:3;;;;;;;2357:212;;;;2252:323;:::o;3710:227::-;3849:11;:9;:11::i;:::-;3902:28;3909:6;3917:12;3902:6;:28::i;:::-;3710:227;;:::o;2744:99::-;498:42;2790:27;;;2824:9;2790:46;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2790:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2790:46:16;;;;;2744:99::o;3284:159::-;3400:1;3368:6;3360:22;;;3383:12;3360:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3360:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3360:36:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3360:36:16;;;;;;;;;;;;;;;;:41;3352:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3284:159;;:::o;4283:397::-;498:42;4387:23;;:6;:23;;;4383:291;;;4434:6;4426:33;;;4466:6;4474:9;4426:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4426:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4426:58:16;;;;;4383:291;;;4515:29;4529:6;4537;4515:13;:29::i;:::-;4622:1;4574:6;4566:33;;;4600:9;4611:6;4566:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4566:52:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4566:52:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4566:52:16;;;;;;;;;;;;;;;;:57;4558:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4383:291;4283:397;;;:::o;6836:200::-;6950:32;6967:6;6975;6950:16;:32::i;:::-;6992:37;7002:6;7010:10;7022:6;6992:9;:37::i;:::-;6836:200;;:::o;3449:255::-;3619:34;3626:12;3640;3619:6;:34::i;:::-;3663;3670:12;3684;3663:6;:34::i;:::-;3449:255;;;;:::o;6206:282::-;498:42;6322:23;;:6;:23;;;6318:110;;6361:56;6375:10;6395:4;6402:6;6410;6361:13;:56::i;:::-;6318:110;6437:44;6455:9;6466:6;6474;6437:17;:44::i;:::-;6206:282;;;:::o;4859:198::-;5003:1;4961:6;4953:32;;;4986:12;4953:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4953:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4953:46:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4953:46:16;;;;;;;;;;;;;;;;:51;4945:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4859:198;;:::o;6494:150::-;6568:22;6575:6;6583;6568;:22::i;:::-;6600:37;6610:6;6618:10;6630:6;6600:9;:37::i;:::-;6494:150;;:::o;3943:334::-;498:42;4022:23;;:6;:23;;;4018:253;;;4069:6;4061:27;;;4095:6;4061:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4061:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4061:43:16;;;;;4018:253;;;4135:29;4149:6;4157;4135:13;:29::i;:::-;4225:1;4194:6;4186:27;;;4214:6;4186:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4186:35:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4186:35:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4186:35:16;;;;;;;;;;;;;;;;:40;4178:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:253;3943:334;;:::o;5960:240::-;498:42;6051:23;;:6;:23;;;6047:110;;6090:56;6104:10;6124:4;6131:6;6139;6090:13;:56::i;:::-;6047:110;6166:27;6178:6;6186;6166:11;:27::i;:::-;5960:240;;:::o;1466:429::-;1670:20;417:42;1693:53;;;1747:7;1693:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1693:62:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1693:62:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:62:16;;;;;;39:16:-1;36:1;17:17;2:54;1693:62:16;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1693:62:16;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;1693:62:16;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1693:62:16;;;;;;;;;;;1670:85;;1771:6;1780:1;1771:10;;1766:123;1787:6;:13;1783:1;:17;1766:123;;;1842:1;1829:6;1836:1;1829:9;;;;;;;;;;;;;;:14;1821:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:3;;;;;;;1766:123;;;;1466:429;;:::o;1901:345::-;2051:18;2080:6;2072:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2072:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2072:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2072:28:16;;;;;;;;;;;;;;;;2051:49;;2177:4;2131:50;;2138:10;2131:26;;;2158:6;2166;2131:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:42:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:42:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2131:42:16;;;;;;;;;;;;;;;;:50;;;2110:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1901:345;;;:::o;6650:180::-;6754:22;6761:6;6769;6754;:22::i;:::-;6786:37;6796:6;6804:10;6816:6;6786:9;:37::i;:::-;6650:180;;:::o;2849:429::-;498:42;2923:23;;:6;:23;;;2919:353;;;498:42;2962:27;;;2996:6;2962:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2962:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2962:43:16;;;;;2919:353;;;3099:29;3113:6;3121;3099:13;:29::i;:::-;3198:1;3174:6;3166:20;;;3187:6;3166:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3166:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3166:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3166:28:16;;;;;;;;;;;;;;;;:33;3143:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2919:353;2849:429;;:::o;722:345::-;866:18;895:6;887:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;887:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;887:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;887:28:16;;;;;;;;;;;;;;;;866:49;;953:10;946:31;;;978:6;986:9;997:6;946:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;946:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;946:58:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;946:58:16;;;;;;;;;;;;;;;;925:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;722:345;;;;;:::o;547:169::-;605:7;637:1;632;:6;;624:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;673:9;689:1;685;:5;673:17;;708:1;701:8;;;547:169;;;;:::o;1073:387::-;498:42;1193:23;;:6;:23;;;1189:265;;;1232:9;:14;;1253:6;1232:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1232:32:16;;1189:265;;;1335:6;1327:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1327:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1327:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1327:28:16;;;;;;;;;;;;;;;;1320:45;;;1366:9;1377:6;1320:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1320:64:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1320:64:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1320:64:16;;;;;;;;;;;;;;;;1295:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1189:265;1073:387;;;:::o", + "deployedSourceMap": "343:6695:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:690;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5264:690:16;;;;;;;;:::i;:::-;;4686:167;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4686:167:16;;;;;;;;:::i;2581:157::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2581:157:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2581:157:16;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2581:157:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2581:157:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2581:157:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2581:157:16;;-1:-1:-1;2581:157:16;;-1:-1:-1;;;;;2581:157:16:i;2252:323::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2252:323:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2252:323:16;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2252:323:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2252:323:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2252:323:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2252:323:16;;-1:-1:-1;2252:323:16;;-1:-1:-1;;;;;2252:323:16:i;3710:227::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3710:227:16;;;;;;;;:::i;2744:99::-;;;:::i;3284:159::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3284:159:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3284:159:16;;;;;;;;:::i;4283:397::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4283:397:16;;;;;;;;;;;;;;;;;:::i;6836:200::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6836:200:16;;;;;;;;:::i;3449:255::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;3449:255:16;;;;;;;;;;;;;;;;;;;;:::i;6206:282::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6206:282:16;;;;;;;;;;;;;;;;;:::i;4859:198::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4859:198:16;;;;;;;;:::i;6494:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6494:150:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6494:150:16;;;;;;;;:::i;3943:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3943:334:16;;;;;;;;:::i;5960:240::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5960:240:16;;;;;;;;:::i;1466:429::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1466:429:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1466:429:16;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1466:429:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1466:429:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1466:429:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1466:429:16;;-1:-1:-1;1466:429:16;;-1:-1:-1;;;;;1466:429:16:i;1901:345::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1901:345:16;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1901:345:16;;;;;;;;:::i;6650:180::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6650:180:16;;;;;;;;:::i;2849:429::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2849:429:16;;;;;;;;:::i;5264:690::-;5425:40;;;-1:-1:-1;;;5425:40:16;;5459:4;5425:40;;;;;;5407:15;;-1:-1:-1;;;;;5425:25:16;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;5425:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5425:40:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5425:40:16;;-1:-1:-1;;;;;;5639:23:16;;498:42;5639:23;5635:110;;5678:56;5692:10;5712:4;5719:6;5727;5678:13;:56::i;:::-;5754:22;5761:6;5769;5754;:22::i;:::-;5840:40;;;-1:-1:-1;;;5840:40:16;;5874:4;5840:40;;;;;;5824:13;;-1:-1:-1;;;;;5840:25:16;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;5840:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5840:40:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5840:40:16;;-1:-1:-1;5891:56:16;5901:6;5909:10;5921:25;5840:40;5935:10;5921:3;:25::i;:::-;5891:9;:56::i;:::-;5264:690;;;;:::o;4686:167::-;4778:6;-1:-1:-1;;;;;4770:22:16;;4793:12;4770:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4770:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4770:36:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4770:36:16;:41;4762:84;;;;;-1:-1:-1;;;4762:84:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;4686:167;;:::o;2581:157::-;2677:21;2690:7;2677:12;:21::i;:::-;2708:23;2723:7;2708:14;:23::i;:::-;2581:157;:::o;2252:323::-;2362:6;2357:212;2378:7;:14;2374:1;:18;2357:212;;;498:42;-1:-1:-1;;;;;2462:27:16;:7;2470:1;2462:10;;;;;;;;;;;;;;-1:-1:-1;;;;;2462:27:16;;2458:101;;2509:35;2523:7;2531:1;2523:10;;;;;;;;;;;;;;-1:-1:-1;;2509:13:16;:35::i;:::-;2394:3;;2357:212;;3710:227;3849:11;:9;:11::i;:::-;3902:28;3909:6;3917:12;3902:6;:28::i;2744:99::-;498:42;-1:-1:-1;;;;;2790:27:16;;2824:9;2790:46;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2790:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2790:46:16;;;;;2744:99::o;3284:159::-;3368:6;-1:-1:-1;;;;;3360:22:16;;3383:12;3360:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3360:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3360:36:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3360:36:16;:41;3352:84;;;;;-1:-1:-1;;;3352:84:16;;;;;;;;;;;;;;;;;;;;;;;;;;;4283:397;-1:-1:-1;;;;;4387:23:16;;498:42;4387:23;4383:291;;;4434:6;-1:-1:-1;;;;;4426:33:16;;4466:6;4474:9;4426:58;;;;;;;;;;;;;-1:-1:-1;;;;;4426:58:16;-1:-1:-1;;;;;4426:58:16;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4426:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4426:58:16;;;;;4383:291;;;4515:29;4529:6;4537;4515:13;:29::i;:::-;4574:6;-1:-1:-1;;;;;4566:33:16;;4600:9;4611:6;4566:52;;;;;;;;;;;;;-1:-1:-1;;;;;4566:52:16;-1:-1:-1;;;;;4566:52:16;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4566:52:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4566:52:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4566:52:16;:57;4558:105;;;;-1:-1:-1;;;4558:105:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4283:397;;;:::o;6836:200::-;6950:32;6967:6;6975;6950:16;:32::i;:::-;6992:37;7002:6;7010:10;7022:6;6992:9;:37::i;3449:255::-;3619:34;3626:12;3640;3619:6;:34::i;:::-;3663;3670:12;3684;3663:6;:34::i;6206:282::-;-1:-1:-1;;;;;6322:23:16;;498:42;6322:23;6318:110;;6361:56;6375:10;6395:4;6402:6;6410;6361:13;:56::i;:::-;6437:44;6455:9;6466:6;6474;6437:17;:44::i;4859:198::-;4961:6;-1:-1:-1;;;;;4953:32:16;;4986:12;4953:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4953:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4953:46:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4953:46:16;:51;4945:105;;;;-1:-1:-1;;;4945:105:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6494:150;6568:22;6575:6;6583;6568;:22::i;3943:334::-;-1:-1:-1;;;;;4022:23:16;;498:42;4022:23;4018:253;;;4069:6;-1:-1:-1;;;;;4061:27:16;;4095:6;4061:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4061:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4061:43:16;;;;;4018:253;;;4135:29;4149:6;4157;4135:13;:29::i;:::-;4194:6;-1:-1:-1;;;;;4186:27:16;;4214:6;4186:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4186:35:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4186:35:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4186:35:16;:40;4178:82;;;;;-1:-1:-1;;;4178:82:16;;;;;;;;;;;;;;;;;;;;;;;;;;;5960:240;-1:-1:-1;;;;;6051:23:16;;498:42;6051:23;6047:110;;6090:56;6104:10;6124:4;6131:6;6139;6090:13;:56::i;:::-;6166:27;6178:6;6186;6166:11;:27::i;1466:429::-;1693:62;;-1:-1:-1;;;1693:62:16;;;;;;;;;;;;;;;;;1670:20;;417:42;;1693:53;;1747:7;;1693:62;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1693:62:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1693:62:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:62:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1693:62:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;1693:62:16;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;1693:62:16;;421:4:-1;412:14;;;;1693:62:16;;;;;412:14:-1;1693:62:16;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1693:62:16;;;;;;;;;;;1670:85;;1771:6;1780:1;1771:10;;1766:123;1787:6;:13;1783:1;:17;1766:123;;;1829:6;1836:1;1829:9;;;;;;;;;;;;;;1842:1;1829:14;1821:57;;;;;-1:-1:-1;;;1821:57:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:3;;1766:123;;1901:345;2051:18;2080:6;-1:-1:-1;;;;;2072:26:16;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2072:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2072:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2072:28:16;2131:42;;;-1:-1:-1;;;2131:42:16;;-1:-1:-1;;;;;2131:42:16;;;;;;;;;;;;;;;2072:28;;-1:-1:-1;2131:26:16;;;;;;:42;;;;;2072:28;;2131:42;;;;;;;;-1:-1:-1;2131:26:16;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;2131:42:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:42:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2131:42:16;:50;;2177:4;2131:50;2110:129;;;;;-1:-1:-1;;;2110:129:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;6650:180;6754:22;6761:6;6769;6754;:22::i;2849:429::-;-1:-1:-1;;;;;2923:23:16;;498:42;2923:23;2919:353;;;498:42;-1:-1:-1;;;;;2962:27:16;;2996:6;2962:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;2919:353:16;3099:29;3113:6;3121;3099:13;:29::i;:::-;3174:6;-1:-1:-1;;;;;3166:20:16;;3187:6;3166:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3166:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3166:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3166:28:16;:33;3143:118;;;;;-1:-1:-1;;;3143:118:16;;;;;;;;;;;;;;;;;;;;;;;;;;;722:345;866:18;895:6;-1:-1:-1;;;;;887:26:16;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;887:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;887:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;887:28:16;946:58;;;-1:-1:-1;;;946:58:16;;-1:-1:-1;;;;;946:58:16;;;;;;;;;;;;;;;;;;;;;;887:28;;-1:-1:-1;946:31:16;;;;;;:58;;;;;887:28;;946:58;;;;;;;;-1:-1:-1;946:31:16;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;946:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;946:58:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;946:58:16;925:135;;;;;-1:-1:-1;;;925:135:16;;;;;;;;;;;;;;;;;;;;;;;;;;;547:169;605:7;637:1;632;:6;;624:39;;;;;-1:-1:-1;;;624:39:16;;;;;;;;;;;;-1:-1:-1;;;624:39:16;;;;;;;;;;;;;;;-1:-1:-1;685:5:16;;;547:169::o;1073:387::-;-1:-1:-1;;;;;1193:23:16;;498:42;1193:23;1189:265;;;1232:32;;-1:-1:-1;;;;;1232:14:16;;;1253:6;;1232:32;;;;1253:6;1232:14;:32;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1232:32:16;;1189:265;;;1335:6;-1:-1:-1;;;;;1327:26:16;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1327:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1327:28:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1327:28:16;1320:64;;;-1:-1:-1;;;1320:64:16;;-1:-1:-1;;;;;1320:64:16;;;;;;;;;;;;;;;:45;;;;;;;:64;;;;;1327:28;;1320:64;;;;;;;-1:-1:-1;1320:45:16;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;1320:64:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1320:64:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1320:64:16;1295:148;;;;;-1:-1:-1;;;1295:148:16;;;;;;;;;;;;;;;;;;;;;;;;;;", "source": "/* Mostly functions from https://compound.finance/developers/ctokens\n and https://compound.finance/developers/comptroller\n*/\npragma solidity 0.5.16;\n\nimport \"../../interfaces/compound/IComptroller.sol\";\nimport \"../../interfaces/compound/ICEther.sol\";\nimport \"../../interfaces/compound/ICToken.sol\";\n\nimport \"../../interfaces/IERC20.sol\";\n\ncontract CompoundBase {\n address constant CompoundComptrollerAddress = 0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B;\n address constant CEtherAddress = 0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5;\n\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a, \"safe-math-sub-failed\");\n uint256 c = a - b;\n\n return c;\n }\n\n function _transferFrom(\n address sender,\n address recipient,\n address cToken,\n uint amount\n ) internal {\n address underlying = ICToken(cToken).underlying();\n require(\n IERC20(underlying).transferFrom(sender, recipient, amount),\n \"cmpnd-mgr-transfer-from-failed\"\n );\n }\n\n function _transfer(\n address cToken,\n address recipient,\n uint amount\n ) internal {\n if (cToken == CEtherAddress) {\n recipient.call.value(amount)(\"\");\n } else {\n require(\n IERC20(ICToken(cToken).underlying()).transfer(recipient, amount),\n \"cmpnd-mgr-transfer-failed\"\n );\n }\n }\n\n function enterMarkets(\n address[] memory cTokens // Address of the Compound derivation token (e.g. cDAI)\n ) public {\n // Enter the compound markets for all the specified tokens\n uint[] memory errors = IComptroller(CompoundComptrollerAddress).enterMarkets(cTokens);\n\n for (uint i = 0; i < errors.length; i++) {\n require(errors[i] == 0, \"cmpnd-mgr-enter-markets-failed\");\n }\n }\n\n function approveCToken(\n address cToken,\n uint amount\n ) public {\n // Approves CToken contract to call `transferFrom`\n address underlying = ICToken(cToken).underlying();\n require(\n IERC20(underlying).approve(cToken, amount) == true,\n \"cmpnd-mgr-ctoken-approved-failed\"\n );\n }\n\n function approveCTokens(\n address[] memory cTokens // Tokens to approve\n ) public {\n for (uint i = 0; i < cTokens.length; i++) {\n // Don't need to approve ICEther\n if (cTokens[i] != CEtherAddress) {\n approveCToken(cTokens[i], uint(-1));\n }\n }\n }\n\n function enterMarketsAndApproveCTokens(\n address[] memory cTokens\n ) public {\n enterMarkets(cTokens);\n approveCTokens(cTokens);\n }\n\n function supplyETH() public payable {\n ICEther(CEtherAddress).mint.value(msg.value)();\n }\n\n function supply(address cToken, uint amount) public payable {\n if (cToken == CEtherAddress) {\n ICEther(CEtherAddress).mint.value(amount)();\n } else {\n // Approves CToken contract to call `transferFrom`\n approveCToken(cToken, amount);\n\n require(\n ICToken(cToken).mint(amount) == 0,\n \"cmpnd-mgr-ctoken-supply-failed\"\n );\n }\n }\n\n function borrow(address cToken, uint borrowAmount) public {\n require(ICToken(cToken).borrow(borrowAmount) == 0, \"cmpnd-mgr-ctoken-borrow-failed\");\n }\n\n function supplyAndBorrow(\n address supplyCToken,\n uint supplyAmount,\n address borrowCToken,\n uint borrowAmount\n ) public payable {\n supply(supplyCToken, supplyAmount);\n borrow(borrowCToken, borrowAmount);\n }\n\n function supplyETHAndBorrow(\n address cToken,\n uint borrowAmount\n ) public payable {\n // Supply some Ether\n supplyETH();\n\n // Borrow some CTokens\n borrow(cToken, borrowAmount);\n }\n\n function repayBorrow(address cToken, uint amount) public payable {\n if (cToken == CEtherAddress) {\n ICEther(cToken).repayBorrow.value(amount)();\n } else {\n approveCToken(cToken, amount);\n require(ICToken(cToken).repayBorrow(amount) == 0, \"cmpnd-mgr-ctoken-repay-failed\");\n }\n }\n\n function repayBorrowBehalf(address recipient, address cToken, uint amount) public payable {\n if (cToken == CEtherAddress) {\n ICEther(cToken).repayBorrowBehalf.value(amount)(recipient);\n } else {\n approveCToken(cToken, amount);\n require(ICToken(cToken).repayBorrowBehalf(recipient, amount) == 0, \"cmpnd-mgr-ctoken-repaybehalf-failed\");\n }\n }\n\n function redeem(address cToken, uint redeemTokens) public payable {\n require(ICToken(cToken).redeem(redeemTokens) == 0, \"cmpnd-mgr-ctoken-redeem-failed\");\n }\n\n function redeemUnderlying(address cToken, uint redeemTokens) public payable {\n require(ICToken(cToken).redeemUnderlying(redeemTokens) == 0, \"cmpnd-mgr-ctoken-redeem-underlying-failed\");\n }\n\n // -- Helper functions so proxy doesn't hold any funds, all funds borrowed\n // or redeemed gets sent to user\n // User needs to `approve(spender, amount)` before through proxy functions work\n\n function supplyThroughProxy(\n address cToken,\n uint amount\n ) public payable {\n // Gets initial CToken balance\n uint initialBal = ICToken(cToken).balanceOf(address(this));\n\n // If cToken isn't an ether address, we need to transferFrom\n // If this fails, users needs to execute `approve(spender, amount)` to this proxy\n if (cToken != CEtherAddress) {\n _transferFrom(msg.sender, address(this), cToken, amount);\n }\n supply(cToken, amount);\n\n // Sends CToken back to user\n uint finalBal = ICToken(cToken).balanceOf(address(this));\n\n _transfer(cToken, msg.sender, sub(finalBal, initialBal));\n }\n\n function repayBorrowThroughProxy(address cToken, uint amount) public payable {\n if (cToken != CEtherAddress) {\n _transferFrom(msg.sender, address(this), cToken, amount);\n }\n repayBorrow(cToken, amount);\n }\n\n function repayBorrowBehalfThroughProxy(address recipient, address cToken, uint amount) public payable {\n if (cToken != CEtherAddress) {\n _transferFrom(msg.sender, address(this), cToken, amount);\n }\n repayBorrowBehalf(recipient, cToken, amount);\n }\n\n function borrowThroughProxy(address cToken, uint amount) public {\n borrow(cToken, amount);\n _transfer(cToken, msg.sender, amount);\n }\n\n function redeemThroughProxy(\n address cToken,\n uint amount\n ) public payable {\n redeem(cToken, amount);\n _transfer(cToken, msg.sender, amount);\n }\n\n function redeemUnderlyingThroughProxy(\n address cToken,\n uint amount\n ) public payable {\n redeemUnderlying(cToken, amount);\n _transfer(cToken, msg.sender, amount);\n }\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol", "ast": { @@ -637,10 +637,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "624:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1170,10 +1170,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "925:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1615,10 +1615,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "1295:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2165,10 +2165,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "1821:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2731,10 +2731,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "2110:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -3514,7 +3514,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "2824:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3985,10 +3985,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "3143:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4428,10 +4428,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "3352:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5316,10 +5316,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "4178:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5898,10 +5898,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "4558:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6387,10 +6387,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "4762:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6678,10 +6678,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "4945:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6838,7 +6838,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "5459:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -7035,7 +7035,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "5692:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7065,7 +7065,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "5712:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -7301,7 +7301,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "5874:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -7456,7 +7456,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "5909:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7742,7 +7742,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "6104:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7772,7 +7772,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "6124:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -8117,7 +8117,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "6375:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8147,7 +8147,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "6395:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -8565,7 +8565,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "6618:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -8827,7 +8827,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "6804:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9089,7 +9089,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "7010:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -9510,10 +9510,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "624:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10043,10 +10043,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "925:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10488,10 +10488,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "1295:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -11038,10 +11038,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "1821:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -11604,10 +11604,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "2110:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -12387,7 +12387,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "2824:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -12858,10 +12858,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "3143:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -13301,10 +13301,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "3352:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -14189,10 +14189,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "4178:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -14771,10 +14771,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "4558:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -15260,10 +15260,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "4762:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -15551,10 +15551,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "4945:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -15711,7 +15711,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "5459:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -15908,7 +15908,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "5692:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -15938,7 +15938,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "5712:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -16174,7 +16174,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "5874:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -16329,7 +16329,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "5909:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -16615,7 +16615,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "6104:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -16645,7 +16645,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "6124:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -16990,7 +16990,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "6375:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -17020,7 +17020,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7816, + "referencedDeclaration": 7877, "src": "6395:4:16", "typeDescriptions": { "typeIdentifier": "t_contract$_CompoundBase_$2785", @@ -17438,7 +17438,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "6618:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -17700,7 +17700,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "6804:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -17962,7 +17962,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7794, + "referencedDeclaration": 7827, "src": "7010:3:16", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -18135,7 +18135,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T03:20:43.702Z", + "updatedAt": "2020-04-03T06:25:13.482Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DACProxy.json b/packages/smart-contracts/artifacts/DACProxy.json index 36f39b4..1c3ebe4 100644 --- a/packages/smart-contracts/artifacts/DACProxy.json +++ b/packages/smart-contracts/artifacts/DACProxy.json @@ -286,11 +286,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"foo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"bar\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"fax\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"addressesProvider\",\"outputs\":[{\"internalType\":\"contract ILendingPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"name\":\"setCache\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":\"DACProxy\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x60806040527324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b506040516200291d3803806200291d83398181016040526200008c9190810190620004f2565b600133600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a262000123816200013e60201b60201c565b505062000136816200013e60201b60201c565b5050620007d7565b600062000176336000357fffffffff00000000000000000000000000000000000000000000000000000000166200030460201b60201c565b620001b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001af9062000671565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916846000366040516200023c93929190620006b5565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ae9062000693565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003455760019050620004be565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003a65760019050620004be565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620004075760009050620004be565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401620004679392919062000634565b60206040518083038186803b1580156200048057600080fd5b505afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004bb91908101906200051e565b90505b92915050565b600081519050620004d581620007a3565b92915050565b600081519050620004ec81620007bd565b92915050565b6000602082840312156200050557600080fd5b60006200051584828501620004c4565b91505092915050565b6000602082840312156200053157600080fd5b60006200054184828501620004db565b91505092915050565b62000555816200070d565b82525050565b62000566816200072d565b82525050565b60006200057a8385620006eb565b93506200058983858462000783565b620005948362000792565b840190509392505050565b6000620005ae601483620006fc565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000620005f0601f83620006fc565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b6200062e8162000779565b82525050565b60006060820190506200064b60008301866200054a565b6200065a60208301856200054a565b6200066960408301846200055b565b949350505050565b600060208201905081810360008301526200068c816200059f565b9050919050565b60006020820190508181036000830152620006ae81620005e1565b9050919050565b6000604082019050620006cc600083018662000623565b8181036020830152620006e18184866200056c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200071a8262000759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b620007ae816200070d565b8114620007ba57600080fd5b50565b620007c88162000721565b8114620007d457600080fd5b50565b61213680620007e76000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b591908101906116a0565b610258565b005b6100d660048036036100d1919081019061171b565b61036e565b6040516100e39190611cb5565b60405180910390f35b61010660048036036101019190810190611818565b61052a565b604051610114929190611c6a565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611cf2565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611884565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611bef565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be91908101906116a0565b610833565b6040516101d09190611c9a565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611cd7565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611d0d565b60405180910390f35b34801561023b57600080fd5b506102566004803603610251919081019061176f565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611d4a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611daa565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611cb5565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d991908101906116c9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611cb5565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd91908101906116c9565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611d4a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611dea565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611d4a565b60405180910390fd5b6000610ab76002856110fc90919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c611146565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050602060046111b3565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506084611275565b905060608289604051602001610bc89190611e0a565b60405160208183030381529060405289604051602001610be89190611e0a565b60405160208183030381529060405287604051602001610c089190611e0a565b60405160208183030381529060405285604051602001610c2c959493929190611b8f565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610db55773773ccbfb422850617a5680d40b1260422d072f4173ffffffffffffffffffffffffffffffffffffffff16610ccf6002876110fc90919063ffffffff16565b604051610cdb90611bda565b60006040518083038185875af1925050503d8060008114610d18576040519150601f19603f3d011682016040523d82523d6000602084013e610d1d565b606091505b50505073abccb8f0a3c206bb0468c52ccc20f3b81077417b73ffffffffffffffffffffffffffffffffffffffff16610d5f6002876110fc90919063ffffffff16565b604051610d6b90611bda565b60006040518083038185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b505050610f20565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f41610dfa6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610e17929190611c0a565b602060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6991908101906117ef565b508973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b610eaf6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610ecc929190611c0a565b602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f1e91908101906117ef565b505b610f3c8a610f378a8c6112d090919063ffffffff16565b611325565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8757600190506110f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe657600190506110f6565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561104557600090506110f6565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b81526004016110a393929190611c33565b60206040518083038186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f391908101906117ef565b90505b92915050565b600061113e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113d9565b905092915050565b6000601482018351101561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690611d8a565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290611dca565b60405180910390fd5b606082156000811461121857604051915060208201604052611269565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112565780518352602083019250602081019050611239565b50868552601f19601f8301166040525050505b50809150509392505050565b6060825182106112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611dca565b60405180910390fd5b6112c88383848651036111b3565b905092915050565b60008082840190508381101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290611d6a565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561138f57600080fd5b505afa1580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906116f2565b90506113d481848461143a565b505050565b60008083118290611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179190611d28565b60405180910390fd5b50600083858161142c57fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f0578273ffffffffffffffffffffffffffffffffffffffff16816040516114a690611bda565b60006040518083038185875af1925050503d80600081146114e3576040519150601f19603f3d011682016040523d82523d6000602084013e6114e8565b606091505b50505061157f565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161152b929190611c0a565b602060405180830381600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157d91908101906117ef565b505b505050565b60008135905061159381612080565b92915050565b6000815190506115a881612080565b92915050565b6000815190506115bd81612097565b92915050565b6000815190506115d2816120ae565b92915050565b60008083601f8401126115ea57600080fd5b8235905067ffffffffffffffff81111561160357600080fd5b60208301915083600182028301111561161b57600080fd5b9250929050565b600082601f83011261163357600080fd5b813561164661164182611e84565b611e57565b9150808252602083016020830185838301111561166257600080fd5b61166d83828461202d565b50505092915050565b600081359050611685816120c5565b92915050565b60008135905061169a816120dc565b92915050565b6000602082840312156116b257600080fd5b60006116c084828501611584565b91505092915050565b6000602082840312156116db57600080fd5b60006116e984828501611599565b91505092915050565b60006020828403121561170457600080fd5b6000611712848285016115ae565b91505092915050565b6000806040838503121561172e57600080fd5b600061173c85828601611584565b925050602083013567ffffffffffffffff81111561175957600080fd5b61176585828601611622565b9150509250929050565b60008060008060006080868803121561178757600080fd5b600061179588828901611584565b95505060206117a68882890161168b565b94505060406117b78882890161168b565b935050606086013567ffffffffffffffff8111156117d457600080fd5b6117e0888289016115d8565b92509250509295509295909350565b60006020828403121561180157600080fd5b600061180f848285016115c3565b91505092915050565b6000806040838503121561182b57600080fd5b600083013567ffffffffffffffff81111561184557600080fd5b61185185828601611622565b925050602083013567ffffffffffffffff81111561186e57600080fd5b61187a85828601611622565b9150509250929050565b60006020828403121561189657600080fd5b60006118a484828501611676565b91505092915050565b6118b681611f8b565b82525050565b6118c581611ef3565b82525050565b6118d481611f17565b82525050565b6118e381611f23565b82525050565b60006118f58385611ec6565b935061190283858461202d565b61190b8361206f565b840190509392505050565b600061192182611eb0565b61192b8185611ec6565b935061193b81856020860161203c565b6119448161206f565b840191505092915050565b600061195a82611eb0565b6119648185611ed7565b935061197481856020860161203c565b80840191505092915050565b61198981611f9d565b82525050565b61199881611fc1565b82525050565b6119a781611fe5565b82525050565b60006119b882611ebb565b6119c28185611ee2565b93506119d281856020860161203c565b6119db8161206f565b840191505092915050565b60006119f3601483611ee2565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000611a33601b83611ee2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611a73601283611ee2565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611ab3602083611ee2565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611af3600083611ed7565b9150600082019050919050565b6000611b0d601883611ee2565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b6000611b4d601f83611ee2565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611b8981611f81565b82525050565b6000611b9b828861194f565b9150611ba7828761194f565b9150611bb3828661194f565b9150611bbf828561194f565b9150611bcb828461194f565b91508190509695505050505050565b6000611be582611ae6565b9150819050919050565b6000602082019050611c0460008301846118bc565b92915050565b6000604082019050611c1f60008301856118ad565b611c2c6020830184611b80565b9392505050565b6000606082019050611c4860008301866118bc565b611c5560208301856118bc565b611c6260408301846118da565b949350505050565b6000604082019050611c7f60008301856118bc565b8181036020830152611c918184611916565b90509392505050565b6000602082019050611caf60008301846118cb565b92915050565b60006020820190508181036000830152611ccf8184611916565b905092915050565b6000602082019050611cec6000830184611980565b92915050565b6000602082019050611d07600083018461198f565b92915050565b6000602082019050611d22600083018461199e565b92915050565b60006020820190508181036000830152611d4281846119ad565b905092915050565b60006020820190508181036000830152611d63816119e6565b9050919050565b60006020820190508181036000830152611d8381611a26565b9050919050565b60006020820190508181036000830152611da381611a66565b9050919050565b60006020820190508181036000830152611dc381611aa6565b9050919050565b60006020820190508181036000830152611de381611b00565b9050919050565b60006020820190508181036000830152611e0381611b40565b9050919050565b6000602082019050611e1f6000830184611b80565b92915050565b6000604082019050611e3a6000830186611b80565b8181036020830152611e4d8184866118e9565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611e7a57600080fd5b8060405250919050565b600067ffffffffffffffff821115611e9b57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611efe82611f61565b9050919050565b6000611f1082611f61565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611f5a82611ef3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f9682612009565b9050919050565b6000611fa882611faf565b9050919050565b6000611fba82611f61565b9050919050565b6000611fcc82611fd3565b9050919050565b6000611fde82611f61565b9050919050565b6000611ff082611ff7565b9050919050565b600061200282611f61565b9050919050565b60006120148261201b565b9050919050565b600061202682611f61565b9050919050565b82818337600083830152505050565b60005b8381101561205a57808201518184015260208101905061203f565b83811115612069576000848401525b50505050565b6000601f19601f8301169050919050565b61208981611ef3565b811461209457600080fd5b50565b6120a081611f05565b81146120ab57600080fd5b50565b6120b781611f17565b81146120c257600080fd5b50565b6120ce81611f4f565b81146120d957600080fd5b50565b6120e581611f81565b81146120f057600080fd5b5056fea365627a7a72315820a7e949e4f7bad72e45825d8ae15370f38f5f0a3f0755fc55d0f5833c02f1aa736c6578706572696d656e74616cf564736f6c63430005100040", - "deployedBytecode": "0x6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b591908101906116a0565b610258565b005b6100d660048036036100d1919081019061171b565b61036e565b6040516100e39190611cb5565b60405180910390f35b61010660048036036101019190810190611818565b61052a565b604051610114929190611c6a565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611cf2565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611884565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611bef565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be91908101906116a0565b610833565b6040516101d09190611c9a565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611cd7565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611d0d565b60405180910390f35b34801561023b57600080fd5b506102566004803603610251919081019061176f565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611d4a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611daa565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611cb5565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d991908101906116c9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611cb5565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd91908101906116c9565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611d4a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611dea565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611d4a565b60405180910390fd5b6000610ab76002856110fc90919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c611146565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050602060046111b3565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506084611275565b905060608289604051602001610bc89190611e0a565b60405160208183030381529060405289604051602001610be89190611e0a565b60405160208183030381529060405287604051602001610c089190611e0a565b60405160208183030381529060405285604051602001610c2c959493929190611b8f565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610db55773773ccbfb422850617a5680d40b1260422d072f4173ffffffffffffffffffffffffffffffffffffffff16610ccf6002876110fc90919063ffffffff16565b604051610cdb90611bda565b60006040518083038185875af1925050503d8060008114610d18576040519150601f19603f3d011682016040523d82523d6000602084013e610d1d565b606091505b50505073abccb8f0a3c206bb0468c52ccc20f3b81077417b73ffffffffffffffffffffffffffffffffffffffff16610d5f6002876110fc90919063ffffffff16565b604051610d6b90611bda565b60006040518083038185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b505050610f20565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f41610dfa6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610e17929190611c0a565b602060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6991908101906117ef565b508973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b610eaf6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610ecc929190611c0a565b602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f1e91908101906117ef565b505b610f3c8a610f378a8c6112d090919063ffffffff16565b611325565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8757600190506110f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe657600190506110f6565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561104557600090506110f6565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b81526004016110a393929190611c33565b60206040518083038186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f391908101906117ef565b90505b92915050565b600061113e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113d9565b905092915050565b6000601482018351101561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690611d8a565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290611dca565b60405180910390fd5b606082156000811461121857604051915060208201604052611269565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112565780518352602083019250602081019050611239565b50868552601f19601f8301166040525050505b50809150509392505050565b6060825182106112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611dca565b60405180910390fd5b6112c88383848651036111b3565b905092915050565b60008082840190508381101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290611d6a565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561138f57600080fd5b505afa1580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906116f2565b90506113d481848461143a565b505050565b60008083118290611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179190611d28565b60405180910390fd5b50600083858161142c57fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f0578273ffffffffffffffffffffffffffffffffffffffff16816040516114a690611bda565b60006040518083038185875af1925050503d80600081146114e3576040519150601f19603f3d011682016040523d82523d6000602084013e6114e8565b606091505b50505061157f565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161152b929190611c0a565b602060405180830381600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157d91908101906117ef565b505b505050565b60008135905061159381612080565b92915050565b6000815190506115a881612080565b92915050565b6000815190506115bd81612097565b92915050565b6000815190506115d2816120ae565b92915050565b60008083601f8401126115ea57600080fd5b8235905067ffffffffffffffff81111561160357600080fd5b60208301915083600182028301111561161b57600080fd5b9250929050565b600082601f83011261163357600080fd5b813561164661164182611e84565b611e57565b9150808252602083016020830185838301111561166257600080fd5b61166d83828461202d565b50505092915050565b600081359050611685816120c5565b92915050565b60008135905061169a816120dc565b92915050565b6000602082840312156116b257600080fd5b60006116c084828501611584565b91505092915050565b6000602082840312156116db57600080fd5b60006116e984828501611599565b91505092915050565b60006020828403121561170457600080fd5b6000611712848285016115ae565b91505092915050565b6000806040838503121561172e57600080fd5b600061173c85828601611584565b925050602083013567ffffffffffffffff81111561175957600080fd5b61176585828601611622565b9150509250929050565b60008060008060006080868803121561178757600080fd5b600061179588828901611584565b95505060206117a68882890161168b565b94505060406117b78882890161168b565b935050606086013567ffffffffffffffff8111156117d457600080fd5b6117e0888289016115d8565b92509250509295509295909350565b60006020828403121561180157600080fd5b600061180f848285016115c3565b91505092915050565b6000806040838503121561182b57600080fd5b600083013567ffffffffffffffff81111561184557600080fd5b61185185828601611622565b925050602083013567ffffffffffffffff81111561186e57600080fd5b61187a85828601611622565b9150509250929050565b60006020828403121561189657600080fd5b60006118a484828501611676565b91505092915050565b6118b681611f8b565b82525050565b6118c581611ef3565b82525050565b6118d481611f17565b82525050565b6118e381611f23565b82525050565b60006118f58385611ec6565b935061190283858461202d565b61190b8361206f565b840190509392505050565b600061192182611eb0565b61192b8185611ec6565b935061193b81856020860161203c565b6119448161206f565b840191505092915050565b600061195a82611eb0565b6119648185611ed7565b935061197481856020860161203c565b80840191505092915050565b61198981611f9d565b82525050565b61199881611fc1565b82525050565b6119a781611fe5565b82525050565b60006119b882611ebb565b6119c28185611ee2565b93506119d281856020860161203c565b6119db8161206f565b840191505092915050565b60006119f3601483611ee2565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000611a33601b83611ee2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611a73601283611ee2565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611ab3602083611ee2565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611af3600083611ed7565b9150600082019050919050565b6000611b0d601883611ee2565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b6000611b4d601f83611ee2565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611b8981611f81565b82525050565b6000611b9b828861194f565b9150611ba7828761194f565b9150611bb3828661194f565b9150611bbf828561194f565b9150611bcb828461194f565b91508190509695505050505050565b6000611be582611ae6565b9150819050919050565b6000602082019050611c0460008301846118bc565b92915050565b6000604082019050611c1f60008301856118ad565b611c2c6020830184611b80565b9392505050565b6000606082019050611c4860008301866118bc565b611c5560208301856118bc565b611c6260408301846118da565b949350505050565b6000604082019050611c7f60008301856118bc565b8181036020830152611c918184611916565b90509392505050565b6000602082019050611caf60008301846118cb565b92915050565b60006020820190508181036000830152611ccf8184611916565b905092915050565b6000602082019050611cec6000830184611980565b92915050565b6000602082019050611d07600083018461198f565b92915050565b6000602082019050611d22600083018461199e565b92915050565b60006020820190508181036000830152611d4281846119ad565b905092915050565b60006020820190508181036000830152611d63816119e6565b9050919050565b60006020820190508181036000830152611d8381611a26565b9050919050565b60006020820190508181036000830152611da381611a66565b9050919050565b60006020820190508181036000830152611dc381611aa6565b9050919050565b60006020820190508181036000830152611de381611b00565b9050919050565b60006020820190508181036000830152611e0381611b40565b9050919050565b6000602082019050611e1f6000830184611b80565b92915050565b6000604082019050611e3a6000830186611b80565b8181036020830152611e4d8184866118e9565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611e7a57600080fd5b8060405250919050565b600067ffffffffffffffff821115611e9b57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611efe82611f61565b9050919050565b6000611f1082611f61565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611f5a82611ef3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f9682612009565b9050919050565b6000611fa882611faf565b9050919050565b6000611fba82611f61565b9050919050565b6000611fcc82611fd3565b9050919050565b6000611fde82611f61565b9050919050565b6000611ff082611ff7565b9050919050565b600061200282611f61565b9050919050565b60006120148261201b565b9050919050565b600061202682611f61565b9050919050565b82818337600083830152505050565b60005b8381101561205a57808201518184015260208101905061203f565b83811115612069576000848401525b50505050565b6000601f19601f8301169050919050565b61208981611ef3565b811461209457600080fd5b50565b6120a081611f05565b81146120ab57600080fd5b50565b6120b781611f17565b81146120c257600080fd5b50565b6120ce81611f4f565b81146120d957600080fd5b50565b6120e581611f81565b81146120f057600080fd5b5056fea365627a7a72315820a7e949e4f7bad72e45825d8ae15370f38f5f0a3f0755fc55d0f5833c02f1aa736c6578706572696d656e74616cf564736f6c63430005100040", - "sourceMap": "318:2900:29:-;;;485:42:15;398:130;;;;;;;;;;;;;;;;;;;;648:76:29;8:9:-1;5:2;;;30:1;27;20:12;5:2;648:76:29;;;;;;;;;;;;;;;;;;;;;;;;359:1;1074:10:17;1066:5;;:18;;;;;;;;;;;;;;;;;;1111:10;1099:23;;;;;;;;;;;;1221:20:21;1230:10;1221:8;;;:20;;:::i;:::-;;1172:76;697:20:29;706:10;697:8;;;:20;;:::i;:::-;;648:76;318:2900;;2614:274:21;2710:4;1476:33:17;1489:10;1501:7;;;;1476:12;;;:33;;:::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;2760:1:21;2738:24;;:10;:24;;;;2730:68;;;;;;;;;;;;;;;;;;;;;;2829:10;2808:5;;:32;;;;;;;;;;;;;;;;;;2877:4;2870:11;;1544:1:17;;;2614:274:21;;;:::o;1558:375:17:-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1874:42:17;;;;;;;;;1867:49;;1558:375;;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;;;68:71;;;;;146:128;;227:6;221:13;212:22;;239:30;263:5;239:30;;;206:68;;;;;281:263;;396:2;384:9;375:7;371:23;367:32;364:2;;;412:1;409;402:12;364:2;447:1;464:64;520:7;511:6;500:9;496:22;464:64;;;454:74;;426:108;358:186;;;;;551:257;;663:2;651:9;642:7;638:23;634:32;631:2;;;679:1;676;669:12;631:2;714:1;731:61;784:7;775:6;764:9;760:22;731:61;;;721:71;;693:105;625:183;;;;;815:113;898:24;916:5;898:24;;;893:3;886:37;880:48;;;935:110;1016:23;1033:5;1016:23;;;1011:3;1004:36;998:47;;;1075:297;;1189:70;1252:6;1247:3;1189:70;;;1182:77;;1271:43;1307:6;1302:3;1295:5;1271:43;;;1336:29;1358:6;1336:29;;;1331:3;1327:39;1320:46;;1175:197;;;;;;1381:320;;1541:67;1605:2;1600:3;1541:67;;;1534:74;;1641:22;1637:1;1632:3;1628:11;1621:43;1692:2;1687:3;1683:12;1676:19;;1527:174;;;;1710:331;;1870:67;1934:2;1929:3;1870:67;;;1863:74;;1970:33;1966:1;1961:3;1957:11;1950:54;2032:2;2027:3;2023:12;2016:19;;1856:185;;;;2049:113;2132:24;2150:5;2132:24;;;2127:3;2120:37;2114:48;;;2169:431;;2341:2;2330:9;2326:18;2318:26;;2355:71;2423:1;2412:9;2408:17;2399:6;2355:71;;;2437:72;2505:2;2494:9;2490:18;2481:6;2437:72;;;2520:70;2586:2;2575:9;2571:18;2562:6;2520:70;;;2312:288;;;;;;;2607:407;;2798:2;2787:9;2783:18;2775:26;;2848:9;2842:4;2838:20;2834:1;2823:9;2819:17;2812:47;2873:131;2999:4;2873:131;;;2865:139;;2769:245;;;;3021:407;;3212:2;3201:9;3197:18;3189:26;;3262:9;3256:4;3252:20;3248:1;3237:9;3233:17;3226:47;3287:131;3413:4;3287:131;;;3279:139;;3183:245;;;;3435:428;;3609:2;3598:9;3594:18;3586:26;;3623:71;3691:1;3680:9;3676:17;3667:6;3623:71;;;3742:9;3736:4;3732:20;3727:2;3716:9;3712:18;3705:48;3767:86;3848:4;3839:6;3831;3767:86;;;3759:94;;3580:283;;;;;;;3871:162;;3985:6;3980:3;3973:19;4022:4;4017:3;4013:14;3998:29;;3966:67;;;;;4042:163;;4157:6;4152:3;4145:19;4194:4;4189:3;4185:14;4170:29;;4138:67;;;;;4213:91;;4275:24;4293:5;4275:24;;;4264:35;;4258:46;;;;4311:85;;4384:5;4377:13;4370:21;4359:32;;4353:43;;;;4403:144;;4475:66;4468:5;4464:78;4453:89;;4447:100;;;;4554:121;;4627:42;4620:5;4616:54;4605:65;;4599:76;;;;4682:72;;4744:5;4733:16;;4727:27;;;;4762:145;4843:6;4838:3;4833;4820:30;4899:1;4890:6;4885:3;4881:16;4874:27;4813:94;;;;4915:97;;5003:2;4999:7;4994:2;4987:5;4983:14;4979:28;4969:38;;4963:49;;;;5020:117;5089:24;5107:5;5089:24;;;5082:5;5079:35;5069:2;;5128:1;5125;5118:12;5069:2;5063:74;;5144:111;5210:21;5225:5;5210:21;;;5203:5;5200:32;5190:2;;5246:1;5243;5236:12;5190:2;5184:71;;318:2900:29;;;;;;;", - "deployedSourceMap": "318:2900:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1135:130:17;;;;;;;;;;;;;;;;:::i;:::-;;1748:840:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1360:382;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1109:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1109:25:21;;;:::i;:::-;;;;;;;;;;;;;;;;1271:167:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1271:167:17;;;;;;;;;;;;;;;;:::i;:::-;;1002:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1002:26:17;;;:::i;:::-;;;;;;;;;;;;;;;;2614:274:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2614:274:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;966:30:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:30:17;;;:::i;:::-;;;;;;;;;;;;;;;;398:130:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:130:15;;;:::i;:::-;;;;;;;;;;;;;;;;801:2415:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;801:2415:29;;;;;;;;;;;;;;;;:::i;:::-;;1135:130:17;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1219:6;1211:5;;:14;;;;;;;;;;;;;;;;;;1252:5;;;;;;;;;;;1240:18;;;;;;;;;;;;1135:130;:::o;1748:840:21:-;1876:21;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;1940:1:21;1921:21;;:7;:21;;;;1913:66;;;;;;;;;;;;;;;;;;;;;;2147:1;2144;2136:5;2130:12;2123:4;2116:5;2112:16;2103:7;2096:4;2091:3;2087:14;2074:75;2174:14;2220:4;2214:11;2202:23;;2301:4;2297:9;2290:4;2283;2277;2273:15;2269:26;2265:42;2255:8;2251:57;2245:4;2238:71;2339:4;2329:8;2322:22;2396:4;2393:1;2386:4;2376:8;2372:19;2357:44;2429:9;2422:17;2457:1;2452:120;;;;2415:157;;2452:120;2553:4;2546;2536:8;2532:19;2525:33;2415:157;;2043:539;;1544:1:17;;;1748:840:21;;;;:::o;1360:382::-;1465:14;1481:21;1527:5;;;;;;;;;;;:10;;;1538:5;1527:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:17:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1527:17:21;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1527:17:21;;;;;;;;;1518:26;;1576:1;1558:20;;:6;:20;;;1554:138;;;1663:5;;;;;;;;;;;:11;;;1675:5;1663:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1663:18:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1663:18:21;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1663:18:21;;;;;;;;;1654:27;;1554:138;1713:22;1721:6;1729:5;1713:7;:22::i;:::-;1702:33;;1360:382;;;;;:::o;1109:25::-;;;;;;;;;;;;;:::o;1271:167:17:-;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1371:10;1359:9;;:22;;;;;;;;;;;;;;;;;;1420:9;;;;;;;;;;;1396:35;;;;;;;;;;;;1271:167;:::o;1002:26::-;;;;;;;;;;;;;:::o;2614:274:21:-;2710:4;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;2760:1:21;2738:24;;:10;:24;;;;2730:68;;;;;;;;;;;;;;;;;;;;;;2829:10;2808:5;;:32;;;;;;;;;;;;;;;;;;2877:4;2870:11;;1544:1:17;;;2614:274:21;;;:::o;966:30:17:-;;;;;;;;;;;;;:::o;398:130:15:-;;;;;;;;;;;;;:::o;801:2415:29:-;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;1125:16:29;1144:11;1153:1;1144:4;:8;;:11;;;;:::i;:::-;1125:30;;2122:21;2146:27;2161:7;;2146:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2146:27:29;;;;;;2170:2;2146:14;:27::i;:::-;2122:51;;2183:17;2207:21;2213:7;;2207:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2207:21:29;;;;;;2222:2;2226:1;2207:5;:21::i;:::-;2183:45;;2238:17;2262:24;2273:7;;2262:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2262:24:29;;;;;;2282:3;2262:10;:24::i;:::-;2238:48;;2408:20;2461:4;2490:7;2479:19;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2479:19:29;;;2523:4;2512:16;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2512:16:29;;;2553:11;2542:23;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2542:23:29;;;2579:4;2431:162;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2431:162:29;;;2408:185;;2635:31;2643:13;2658:7;2635;:31::i;:::-;;2724:42;2712:54;;:8;:54;;;2708:408;;;498:42;2782:30;;2819:18;2835:1;2819:11;:15;;:18;;;;:::i;:::-;2782:60;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2782:60:29;;599:42;2856:30;;2893:18;2909:1;2893:11;:15;;:18;;;;:::i;:::-;2856:60;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2856:60:29;;2708:408;;;2954:8;2947:25;;;498:42;3000:18;3016:1;3000:11;:15;;:18;;;;:::i;:::-;2947:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2947:72:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2947:72:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2947:72:29;;;;;;;;;;3040:8;3033:25;;;599:42;3086:18;3102:1;3086:11;:15;;:18;;;;:::i;:::-;3033:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3033:72:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3033:72:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3033:72:29;;;;;;;;;;2708:408;3149:60;3181:8;3191:17;3203:4;3191:7;:11;;:17;;;;:::i;:::-;3149:31;:60::i;:::-;1544:1:17;;;;;801:2415:29;;;;;:::o;1558:375:17:-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1874:42:17;;;;;;;;;1867:49;;1558:375;;;;;:::o;3073:130:32:-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3150:46;;3073:130;;;;:::o;3143:358:14:-;3227:7;3281:2;3272:6;:11;3254:6;:13;:30;;3246:61;;;;;;;;;;;;;;;;;;;;;;3317:19;3428:27;3418:6;3411:4;3403:6;3399:17;3395:30;3389:37;3385:71;3370:86;;3483:11;3476:18;;;3143:358;;;;:::o;567:2570::-;713:12;776:7;767:6;:16;749:6;:13;:35;;741:72;;;;;;;;;;;;;;;;;;;;;;824:22;894:7;887:15;920:1;915:1967;;;;3023:4;3017:11;3004:24;;3074:4;3063:9;3059:20;3053:4;3046:34;880:2214;;915:1967;1097:4;1091:11;1078:24;;1756:2;1747:7;1743:16;2138:9;2131:17;2125:4;2121:28;2109:9;2098;2094:25;2090:60;2186:7;2182:2;2178:16;2438:6;2424:9;2417:17;2411:4;2407:28;2395:9;2387:6;2383:22;2379:57;2375:70;2212:425;2471:3;2467:2;2464:11;2212:425;;;2615:2;2609:9;2605:2;2598:21;2512:4;2508:2;2504:13;2498:19;;2552:4;2548:2;2544:13;2538:19;;2212:425;;;2216:247;2673:7;2662:9;2655:26;2863:2;2859:7;2854:2;2850;2846:11;2842:25;2836:4;2829:39;922:1960;;;880:2214;;3121:9;3114:16;;;567:2570;;;;;:::o;256:301::-;358:12;399:6;:13;390:6;:22;382:59;;;;;;;;;;;;;;;;;;;;;;459:91;478:6;498;534;518;:13;:22;459:5;:91::i;:::-;452:98;;256:301;;;;:::o;834:176:32:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;576:213:15:-;671:20;694:17;;;;;;;;;;;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;694:38:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;694:38:15;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;694:38:15;;;;;;;;;671:61;;742:40;759:4;764:8;774:7;742:16;:40::i;:::-;576:213;;;:::o;3718:338:32:-;3804:7;3901:1;3897;:5;3904:12;3889:28;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;3927:17;;4048:1;4041:8;;;3718:338;;;;;:::o;795:323:15:-;349:42;909:22;;:8;:22;;;906:147;;;986:12;:17;;1010:7;986:36;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;986:36:15;;1036:7;;906:147;1070:8;1063:25;;;1089:12;1103:7;1063:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1063:48:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1063:48:15;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1063:48:15;;;;;;;;;;795:323;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:150;;375:6;369:13;360:22;;387:41;422:5;387:41;;;354:79;;;;;440:128;;521:6;515:13;506:22;;533:30;557:5;533:30;;;500:68;;;;;589:336;;;703:3;696:4;688:6;684:17;680:27;670:2;;721:1;718;711:12;670:2;754:6;741:20;731:30;;781:18;773:6;770:30;767:2;;;813:1;810;803:12;767:2;847:4;839:6;835:17;823:29;;898:3;890:4;882:6;878:17;868:8;864:32;861:41;858:2;;;915:1;912;905:12;858:2;663:262;;;;;;934:440;;1035:3;1028:4;1020:6;1016:17;1012:27;1002:2;;1053:1;1050;1043:12;1002:2;1090:6;1077:20;1112:64;1127:48;1168:6;1127:48;;;1112:64;;;1103:73;;1196:6;1189:5;1182:21;1232:4;1224:6;1220:17;1265:4;1258:5;1254:16;1300:3;1291:6;1286:3;1282:16;1279:25;1276:2;;;1317:1;1314;1307:12;1276:2;1327:41;1361:6;1356:3;1351;1327:41;;;995:379;;;;;;;;1382:170;;1482:6;1469:20;1460:29;;1494:53;1541:5;1494:53;;;1454:98;;;;;1559:130;;1639:6;1626:20;1617:29;;1651:33;1678:5;1651:33;;;1611:78;;;;;1696:241;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1851:1;1868:53;1913:7;1904:6;1893:9;1889:22;1868:53;;;1858:63;;1830:97;1762:175;;;;;1944:263;;2059:2;2047:9;2038:7;2034:23;2030:32;2027:2;;;2075:1;2072;2065:12;2027:2;2110:1;2127:64;2183:7;2174:6;2163:9;2159:22;2127:64;;;2117:74;;2089:108;2021:186;;;;;2214:279;;2337:2;2325:9;2316:7;2312:23;2308:32;2305:2;;;2353:1;2350;2343:12;2305:2;2388:1;2405:72;2469:7;2460:6;2449:9;2445:22;2405:72;;;2395:82;;2367:116;2299:194;;;;;2500:470;;;2630:2;2618:9;2609:7;2605:23;2601:32;2598:2;;;2646:1;2643;2636:12;2598:2;2681:1;2698:53;2743:7;2734:6;2723:9;2719:22;2698:53;;;2688:63;;2660:97;2816:2;2805:9;2801:18;2788:32;2840:18;2832:6;2829:30;2826:2;;;2872:1;2869;2862:12;2826:2;2892:62;2946:7;2937:6;2926:9;2922:22;2892:62;;;2882:72;;2767:193;2592:378;;;;;;2977:741;;;;;;3151:3;3139:9;3130:7;3126:23;3122:33;3119:2;;;3168:1;3165;3158:12;3119:2;3203:1;3220:53;3265:7;3256:6;3245:9;3241:22;3220:53;;;3210:63;;3182:97;3310:2;3328:53;3373:7;3364:6;3353:9;3349:22;3328:53;;;3318:63;;3289:98;3418:2;3436:53;3481:7;3472:6;3461:9;3457:22;3436:53;;;3426:63;;3397:98;3554:2;3543:9;3539:18;3526:32;3578:18;3570:6;3567:30;3564:2;;;3610:1;3607;3600:12;3564:2;3638:64;3694:7;3685:6;3674:9;3670:22;3638:64;;;3628:74;;;;3505:203;3113:605;;;;;;;;;3725:257;;3837:2;3825:9;3816:7;3812:23;3808:32;3805:2;;;3853:1;3850;3843:12;3805:2;3888:1;3905:61;3958:7;3949:6;3938:9;3934:22;3905:61;;;3895:71;;3867:105;3799:183;;;;;3989:574;;;4128:2;4116:9;4107:7;4103:23;4099:32;4096:2;;;4144:1;4141;4134:12;4096:2;4207:1;4196:9;4192:17;4179:31;4230:18;4222:6;4219:30;4216:2;;;4262:1;4259;4252:12;4216:2;4282:62;4336:7;4327:6;4316:9;4312:22;4282:62;;;4272:72;;4158:192;4409:2;4398:9;4394:18;4381:32;4433:18;4425:6;4422:30;4419:2;;;4465:1;4462;4455:12;4419:2;4485:62;4539:7;4530:6;4519:9;4515:22;4485:62;;;4475:72;;4360:193;4090:473;;;;;;4570:281;;4694:2;4682:9;4673:7;4669:23;4665:32;4662:2;;;4710:1;4707;4700:12;4662:2;4745:1;4762:73;4827:7;4818:6;4807:9;4803:22;4762:73;;;4752:83;;4724:117;4656:195;;;;;4858:142;4949:45;4988:5;4949:45;;;4944:3;4937:58;4931:69;;;5007:113;5090:24;5108:5;5090:24;;;5085:3;5078:37;5072:48;;;5127:104;5204:21;5219:5;5204:21;;;5199:3;5192:34;5186:45;;;5238:110;5319:23;5336:5;5319:23;;;5314:3;5307:36;5301:47;;;5378:297;;5492:70;5555:6;5550:3;5492:70;;;5485:77;;5574:43;5610:6;5605:3;5598:5;5574:43;;;5639:29;5661:6;5639:29;;;5634:3;5630:39;5623:46;;5478:197;;;;;;5683:343;;5793:38;5825:5;5793:38;;;5843:70;5906:6;5901:3;5843:70;;;5836:77;;5918:52;5963:6;5958:3;5951:4;5944:5;5940:16;5918:52;;;5991:29;6013:6;5991:29;;;5986:3;5982:39;5975:46;;5773:253;;;;;;6033:356;;6161:38;6193:5;6161:38;;;6211:88;6292:6;6287:3;6211:88;;;6204:95;;6304:52;6349:6;6344:3;6337:4;6330:5;6326:16;6304:52;;;6377:6;6372:3;6368:16;6361:23;;6141:248;;;;;;6396:166;6499:57;6550:5;6499:57;;;6494:3;6487:70;6481:81;;;6569:168;6673:58;6725:5;6673:58;;;6668:3;6661:71;6655:82;;;6744:200;6864:74;6932:5;6864:74;;;6859:3;6852:87;6846:98;;;6951:347;;7063:39;7096:5;7063:39;;;7114:71;7178:6;7173:3;7114:71;;;7107:78;;7190:52;7235:6;7230:3;7223:4;7216:5;7212:16;7190:52;;;7263:29;7285:6;7263:29;;;7258:3;7254:39;7247:46;;7043:255;;;;;;7306:320;;7466:67;7530:2;7525:3;7466:67;;;7459:74;;7566:22;7562:1;7557:3;7553:11;7546:43;7617:2;7612:3;7608:12;7601:19;;7452:174;;;;7635:327;;7795:67;7859:2;7854:3;7795:67;;;7788:74;;7895:29;7891:1;7886:3;7882:11;7875:50;7953:2;7948:3;7944:12;7937:19;;7781:181;;;;7971:318;;8131:67;8195:2;8190:3;8131:67;;;8124:74;;8231:20;8227:1;8222:3;8218:11;8211:41;8280:2;8275:3;8271:12;8264:19;;8117:172;;;;8298:332;;8458:67;8522:2;8517:3;8458:67;;;8451:74;;8558:34;8554:1;8549:3;8545:11;8538:55;8621:2;8616:3;8612:12;8605:19;;8444:186;;;;8639:296;;8816:83;8897:1;8892:3;8816:83;;;8809:90;;8927:1;8922:3;8918:11;8911:18;;8802:133;;;;8944:324;;9104:67;9168:2;9163:3;9104:67;;;9097:74;;9204:26;9200:1;9195:3;9191:11;9184:47;9259:2;9254:3;9250:12;9243:19;;9090:178;;;;9277:331;;9437:67;9501:2;9496:3;9437:67;;;9430:74;;9537:33;9533:1;9528:3;9524:11;9517:54;9599:2;9594:3;9590:12;9583:19;;9423:185;;;;9616:113;9699:24;9717:5;9699:24;;;9694:3;9687:37;9681:48;;;9736:890;;10064:93;10153:3;10144:6;10064:93;;;10057:100;;10175:93;10264:3;10255:6;10175:93;;;10168:100;;10286:93;10375:3;10366:6;10286:93;;;10279:100;;10397:93;10486:3;10477:6;10397:93;;;10390:100;;10508:93;10597:3;10588:6;10508:93;;;10501:100;;10618:3;10611:10;;10045:581;;;;;;;;;10633:370;;10831:147;10974:3;10831:147;;;10824:154;;10995:3;10988:10;;10812:191;;;;11010:213;;11128:2;11117:9;11113:18;11105:26;;11142:71;11210:1;11199:9;11195:17;11186:6;11142:71;;;11099:124;;;;;11230:340;;11384:2;11373:9;11369:18;11361:26;;11398:79;11474:1;11463:9;11459:17;11450:6;11398:79;;;11488:72;11556:2;11545:9;11541:18;11532:6;11488:72;;;11355:215;;;;;;11577:431;;11749:2;11738:9;11734:18;11726:26;;11763:71;11831:1;11820:9;11816:17;11807:6;11763:71;;;11845:72;11913:2;11902:9;11898:18;11889:6;11845:72;;;11928:70;11994:2;11983:9;11979:18;11970:6;11928:70;;;11720:288;;;;;;;12015:408;;12179:2;12168:9;12164:18;12156:26;;12193:71;12261:1;12250:9;12246:17;12237:6;12193:71;;;12312:9;12306:4;12302:20;12297:2;12286:9;12282:18;12275:48;12337:76;12408:4;12399:6;12337:76;;;12329:84;;12150:273;;;;;;12430:201;;12542:2;12531:9;12527:18;12519:26;;12556:65;12618:1;12607:9;12603:17;12594:6;12556:65;;;12513:118;;;;;12638:297;;12774:2;12763:9;12759:18;12751:26;;12824:9;12818:4;12814:20;12810:1;12799:9;12795:17;12788:47;12849:76;12920:4;12911:6;12849:76;;;12841:84;;12745:190;;;;;12942:253;;13080:2;13069:9;13065:18;13057:26;;13094:91;13182:1;13171:9;13167:17;13158:6;13094:91;;;13051:144;;;;;13202:255;;13341:2;13330:9;13326:18;13318:26;;13355:92;13444:1;13433:9;13429:17;13420:6;13355:92;;;13312:145;;;;;13464:287;;13619:2;13608:9;13604:18;13596:26;;13633:108;13738:1;13727:9;13723:17;13714:6;13633:108;;;13590:161;;;;;13758:301;;13896:2;13885:9;13881:18;13873:26;;13946:9;13940:4;13936:20;13932:1;13921:9;13917:17;13910:47;13971:78;14044:4;14035:6;13971:78;;;13963:86;;13867:192;;;;;14066:407;;14257:2;14246:9;14242:18;14234:26;;14307:9;14301:4;14297:20;14293:1;14282:9;14278:17;14271:47;14332:131;14458:4;14332:131;;;14324:139;;14228:245;;;;14480:407;;14671:2;14660:9;14656:18;14648:26;;14721:9;14715:4;14711:20;14707:1;14696:9;14692:17;14685:47;14746:131;14872:4;14746:131;;;14738:139;;14642:245;;;;14894:407;;15085:2;15074:9;15070:18;15062:26;;15135:9;15129:4;15125:20;15121:1;15110:9;15106:17;15099:47;15160:131;15286:4;15160:131;;;15152:139;;15056:245;;;;15308:407;;15499:2;15488:9;15484:18;15476:26;;15549:9;15543:4;15539:20;15535:1;15524:9;15520:17;15513:47;15574:131;15700:4;15574:131;;;15566:139;;15470:245;;;;15722:407;;15913:2;15902:9;15898:18;15890:26;;15963:9;15957:4;15953:20;15949:1;15938:9;15934:17;15927:47;15988:131;16114:4;15988:131;;;15980:139;;15884:245;;;;16136:407;;16327:2;16316:9;16312:18;16304:26;;16377:9;16371:4;16367:20;16363:1;16352:9;16348:17;16341:47;16402:131;16528:4;16402:131;;;16394:139;;16298:245;;;;16550:213;;16668:2;16657:9;16653:18;16645:26;;16682:71;16750:1;16739:9;16735:17;16726:6;16682:71;;;16639:124;;;;;16770:428;;16944:2;16933:9;16929:18;16921:26;;16958:71;17026:1;17015:9;17011:17;17002:6;16958:71;;;17077:9;17071:4;17067:20;17062:2;17051:9;17047:18;17040:48;17102:86;17183:4;17174:6;17166;17102:86;;;17094:94;;16915:283;;;;;;;17205:256;;17267:2;17261:9;17251:19;;17305:4;17297:6;17293:17;17404:6;17392:10;17389:22;17368:18;17356:10;17353:34;17350:62;17347:2;;;17425:1;17422;17415:12;17347:2;17445:10;17441:2;17434:22;17245:216;;;;;17468:321;;17611:18;17603:6;17600:30;17597:2;;;17643:1;17640;17633:12;17597:2;17710:4;17706:9;17699:4;17691:6;17687:17;17683:33;17675:41;;17774:4;17768;17764:15;17756:23;;17534:255;;;;17796:121;;17889:5;17883:12;17873:22;;17854:63;;;;17924:122;;18018:5;18012:12;18002:22;;17983:63;;;;18054:162;;18168:6;18163:3;18156:19;18205:4;18200:3;18196:14;18181:29;;18149:67;;;;;18225:144;;18360:3;18345:18;;18338:31;;;;;18378:163;;18493:6;18488:3;18481:19;18530:4;18525:3;18521:14;18506:29;;18474:67;;;;;18549:91;;18611:24;18629:5;18611:24;;;18600:35;;18594:46;;;;18647:99;;18717:24;18735:5;18717:24;;;18706:35;;18700:46;;;;18753:85;;18826:5;18819:13;18812:21;18801:32;;18795:43;;;;18845:144;;18917:66;18910:5;18906:78;18895:89;;18889:100;;;;18996:111;;19078:24;19096:5;19078:24;;;19067:35;;19061:46;;;;19114:121;;19187:42;19180:5;19176:54;19165:65;;19159:76;;;;19242:72;;19304:5;19293:16;;19287:27;;;;19321:129;;19408:37;19439:5;19408:37;;;19395:50;;19389:61;;;;19457:161;;19556:57;19607:5;19556:57;;;19543:70;;19537:81;;;;19625:128;;19724:24;19742:5;19724:24;;;19711:37;;19705:48;;;;19760:163;;19860:58;19912:5;19860:58;;;19847:71;;19841:82;;;;19930:129;;20030:24;20048:5;20030:24;;;20017:37;;20011:48;;;;20066:195;;20182:74;20250:5;20182:74;;;20169:87;;20163:98;;;;20268:145;;20384:24;20402:5;20384:24;;;20371:37;;20365:48;;;;20420:121;;20499:37;20530:5;20499:37;;;20486:50;;20480:61;;;;20548:108;;20627:24;20645:5;20627:24;;;20614:37;;20608:48;;;;20664:145;20745:6;20740:3;20735;20722:30;20801:1;20792:6;20787:3;20783:16;20776:27;20715:94;;;;20818:268;20883:1;20890:101;20904:6;20901:1;20898:13;20890:101;;;20980:1;20975:3;20971:11;20965:18;20961:1;20956:3;20952:11;20945:39;20926:2;20923:1;20919:10;20914:15;;20890:101;;;21006:6;21003:1;21000:13;20997:2;;;21071:1;21062:6;21057:3;21053:16;21046:27;20997:2;20867:219;;;;;21094:97;;21182:2;21178:7;21173:2;21166:5;21162:14;21158:28;21148:38;;21142:49;;;;21199:117;21268:24;21286:5;21268:24;;;21261:5;21258:35;21248:2;;21307:1;21304;21297:12;21248:2;21242:74;;21323:133;21400:32;21426:5;21400:32;;;21393:5;21390:43;21380:2;;21447:1;21444;21437:12;21380:2;21374:82;;21463:111;21529:21;21544:5;21529:21;;;21522:5;21519:32;21509:2;;21565:1;21562;21555:12;21509:2;21503:71;;21581:157;21670:44;21708:5;21670:44;;;21663:5;21660:55;21650:2;;21729:1;21726;21719:12;21650:2;21644:94;;21745:117;21814:24;21832:5;21814:24;;;21807:5;21804:35;21794:2;;21853:1;21850;21843:12;21794:2;21788:74;", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"foo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"bar\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"fax\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"addressesProvider\",\"outputs\":[{\"internalType\":\"contract ILendingPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"name\":\"setCache\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":\"DACProxy\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x6080604052600380546001600160a01b0319167324a42fd28c976a61df5d00d0599c34c4f90748c81790553480156200003757600080fd5b5060405162001ad638038062001ad68339810160408190526200005a9162000320565b600180546001600160a01b0319163390811782556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a2620000ab816001600160e01b03620000ca16565b50620000c29050816001600160e01b03620000ca16565b505062000543565b600062000104337fffffffff000000000000000000000000000000000000000000000000000000008335166001600160e01b036200020316565b62000146576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d9062000467565b60405180910390fd5b60405160043590602435903490829084903390600080357fffffffff0000000000000000000000000000000000000000000000000000000016916200018f91879136906200048b565b60405180910390a46001600160a01b038516620001da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d9062000479565b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b60006001600160a01b038316301415620002205750600162000300565b6001546001600160a01b0384811691161415620002405750600162000300565b6000546001600160a01b03166200025a5750600062000300565b6000546040517fb70096130000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b700961390620002a99086903090879060040162000439565b60206040518083038186803b158015620002c257600080fd5b505afa158015620002d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002fd919081019062000349565b90505b92915050565b805162000300816200051e565b8051620003008162000538565b6000602082840312156200033357600080fd5b600062000341848462000306565b949350505050565b6000602082840312156200035c57600080fd5b600062000341848462000313565b6200037581620004c2565b82525050565b6200037581620004d4565b6000620003948385620004b9565b9350620003a383858462000508565b620003ae8362000514565b9093019392505050565b6000620003c7601483620004b9565b7f64732d617574682d756e617574686f72697a6564000000000000000000000000815260200192915050565b600062000402601f83620004b9565b7f64732d70726f78792d63616368652d616464726573732d726571756972656400815260200192915050565b620003758162000505565b606081016200044982866200036a565b6200045860208301856200036a565b6200034160408301846200037b565b602080825281016200030081620003b8565b602080825281016200030081620003f3565b604081016200049b82866200042e565b8181036020830152620004b081848662000386565b95945050505050565b90815260200190565b60006200030082620004f9565b151590565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b6001600160a01b031690565b90565b82818337506000910152565b601f01601f191690565b6200052981620004c2565b81146200053557600080fd5b50565b6200052981620004cf565b61158380620005536000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b1461013f578063948f507614610161578063bf7e214f1461018e578063c72c4d10146101a3578063ee872558146101b857610091565b806313af4035146100935780631cff79cd146100b35780631f6a1eb9146100dc57806360c7d295146100fd5780637a9e5e4b1461011f575b005b34801561009f57600080fd5b506100916100ae366004610f07565b6101d8565b6100c66100c1366004610f4b565b610263565b6040516100d39190611372565b60405180910390f35b6100ef6100ea366004611039565b610347565b6040516100d3929190611344565b34801561010957600080fd5b50610112610475565b6040516100d39190611383565b34801561012b57600080fd5b5061009161013a36600461106f565b610484565b34801561014b57600080fd5b50610154610502565b6040516100d391906112f3565b34801561016d57600080fd5b5061018161017c366004610f07565b610511565b6040516100d39190611364565b34801561019a57600080fd5b506101126105cb565b3480156101af57600080fd5b506101126105da565b3480156101c457600080fd5b506100916101d3366004610f9d565b6105e9565b6101ee336000356001600160e01b031916610a21565b6102135760405162461bcd60e51b815260040161020a90611391565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b606061027b336000356001600160e01b031916610a21565b6102975760405162461bcd60e51b815260040161020a90611391565b60405160043590602435903490829084903390600080356001600160e01b031916916102c691879136906113ff565b60405180910390a46001600160a01b0386166102f45760405162461bcd60e51b815260040161020a906113c1565b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146103345761033b565b8160208801fd5b50505050505092915050565b6002546040516322fd145760e21b81526000916060916001600160a01b0390911690638bf4515c9061037d908790600401611372565b60206040518083038186803b15801561039557600080fd5b505afa1580156103a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103cd9190810190610f2d565b91506001600160a01b03821661046257600254604051633f6861d960e11b81526001600160a01b0390911690637ed0c3b29061040d908790600401611372565b602060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061045f9190810190610f2d565b91505b61046c8284610263565b90509250929050565b6002546001600160a01b031681565b61049a336000356001600160e01b031916610a21565b6104b65760405162461bcd60e51b815260040161020a90611391565b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000610529336000356001600160e01b031916610a21565b6105455760405162461bcd60e51b815260040161020a90611391565b60405160043590602435903490829084903390600080356001600160e01b0319169161057491879136906113ff565b60405180910390a46001600160a01b0385166105a25760405162461bcd60e51b815260040161020a906113e1565b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b6000546001600160a01b031681565b6003546001600160a01b031681565b6105ff336000356001600160e01b031916610a21565b61061b5760405162461bcd60e51b815260040161020a90611391565b600061062e84600263ffffffff610aff16565b9050600061067484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600c9250610b41915050565b905060606106bd85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506020925060049150610b779050565b9050606061070386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060849250610c0c915050565b90506060828960405160200161071991906113f1565b6040516020818303038152906040528960405160200161073991906113f1565b6040516020818303038152906040528760405160200161075991906113f1565b60408051601f198184030181529082905261077b9493929187906020016112a1565b60405160208183030381529060405290506107968482610263565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038b1614156108b15773773ccbfb422850617a5680d40b1260422d072f416107e286600263ffffffff610aff16565b6040516107ee906112e8565b60006040518083038185875af1925050503d806000811461082b576040519150601f19603f3d011682016040523d82523d6000602084013e610830565b606091505b5073abccb8f0a3c206bb0468c52ccc20f3b81077417b915061085b905086600263ffffffff610aff16565b604051610867906112e8565b60006040518083038185875af1925050503d80600081146108a4576040519150601f19603f3d011682016040523d82523d6000602084013e6108a9565b606091505b5050506109fc565b6001600160a01b038a1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f416108e688600263ffffffff610aff16565b6040518363ffffffff1660e01b8152600401610903929190611301565b602060405180830381600087803b15801561091d57600080fd5b505af1158015610931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610955919081019061101b565b506001600160a01b038a1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b61098b88600263ffffffff610aff16565b6040518363ffffffff1660e01b81526004016109a8929190611301565b602060405180830381600087803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109fa919081019061101b565b505b610a158a610a108b8b63ffffffff610c3c16565b610c61565b50505050505050505050565b60006001600160a01b038316301415610a3c57506001610af9565b6001546001600160a01b0384811691161415610a5a57506001610af9565b6000546001600160a01b0316610a7257506000610af9565b60005460405163b700961360e01b81526001600160a01b039091169063b700961390610aa69086903090879060040161131c565b60206040518083038186803b158015610abe57600080fd5b505afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610af6919081019061101b565b90505b92915050565b6000610af683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cf0565b60008160140183511015610b675760405162461bcd60e51b815260040161020a906113b1565b500160200151600160601b900490565b606081830184511015610b9c5760405162461bcd60e51b815260040161020a906113d1565b606082158015610bb757604051915060208201604052610c01565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610bf0578051835260209283019201610bd8565b5050858452601f01601f1916604052505b5090505b9392505050565b606082518210610c2e5760405162461bcd60e51b815260040161020a906113d1565b610af6838384865103610b77565b600082820183811015610af65760405162461bcd60e51b815260040161020a906113a1565b6003546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b158015610ca657600080fd5b505afa158015610cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cde9190810190610f2d565b9050610ceb818484610d27565b505050565b60008183610d115760405162461bcd60e51b815260040161020a9190611372565b506000838581610d1d57fe5b0495945050505050565b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610dad57826001600160a01b031681604051610d63906112e8565b60006040518083038185875af1925050503d8060008114610da0576040519150601f19603f3d011682016040523d82523d6000602084013e610da5565b606091505b505050610ceb565b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb90610ddb9086908590600401611301565b602060405180830381600087803b158015610df557600080fd5b505af1158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2d919081019061101b565b50505050565b8035610af98161150e565b8051610af98161150e565b8051610af981611525565b60008083601f840112610e6657600080fd5b50813567ffffffffffffffff811115610e7e57600080fd5b602083019150836001820283011115610e9657600080fd5b9250929050565b600082601f830112610eae57600080fd5b8135610ec1610ebc82611450565b611429565b91508082526020830160208301858383011115610edd57600080fd5b610ee88382846114cc565b50505092915050565b8035610af98161152e565b8035610af981611537565b600060208284031215610f1957600080fd5b6000610f258484610e33565b949350505050565b600060208284031215610f3f57600080fd5b6000610f258484610e3e565b60008060408385031215610f5e57600080fd5b6000610f6a8585610e33565b925050602083013567ffffffffffffffff811115610f8757600080fd5b610f9385828601610e9d565b9150509250929050565b600080600080600060808688031215610fb557600080fd5b6000610fc18888610e33565b9550506020610fd288828901610efc565b9450506040610fe388828901610efc565b935050606086013567ffffffffffffffff81111561100057600080fd5b61100c88828901610e54565b92509250509295509295909350565b60006020828403121561102d57600080fd5b6000610f258484610e49565b6000806040838503121561104c57600080fd5b823567ffffffffffffffff81111561106357600080fd5b610f6a85828601610e9d565b60006020828403121561108157600080fd5b6000610f258484610ef1565b611096816114c1565b82525050565b6110968161148a565b61109681611495565b6110968161149a565b60006110c3838561147c565b93506110d08385846114cc565b6110d983611504565b9093019392505050565b60006110ee82611478565b6110f8818561147c565b93506111088185602086016114d8565b6110d981611504565b600061111c82611478565b6111268185611485565b93506111368185602086016114d8565b9290920192915050565b611096816114a7565b600061115660148361147c565b73191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b815260200192915050565b6000611186601b8361147c565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006111bf60128361147c565b7152656164206f7574206f6620626f756e647360701b815260200192915050565b60006111ed60208361147c565b7f64732d70726f78792d7461726765742d616464726573732d7265717569726564815260200192915050565b6000610af9600083611485565b600061123360188361147c565b7f62797465732d726561642d6f75742d6f662d626f756e64730000000000000000815260200192915050565b600061126c601f8361147c565b7f64732d70726f78792d63616368652d616464726573732d726571756972656400815260200192915050565b611096816114be565b60006112ad8288611111565b91506112b98287611111565b91506112c58286611111565b91506112d18285611111565b91506112dd8284611111565b979650505050505050565b6000610af982611219565b60208101610af9828461109c565b6040810161130f828561108d565b610c056020830184611298565b6060810161132a828661109c565b611337602083018561109c565b610f2560408301846110ae565b60408101611352828561109c565b8181036020830152610f2581846110e3565b60208101610af982846110a5565b60208082528101610af681846110e3565b60208101610af98284611140565b60208082528101610af981611149565b60208082528101610af981611179565b60208082528101610af9816111b2565b60208082528101610af9816111e0565b60208082528101610af981611226565b60208082528101610af98161125f565b60208101610af98284611298565b6040810161140d8286611298565b81810360208301526114208184866110b7565b95945050505050565b60405181810167ffffffffffffffff8111828210171561144857600080fd5b604052919050565b600067ffffffffffffffff82111561146757600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b919050565b6000610af9826114b2565b151590565b6001600160e01b03191690565b6000610af98261148a565b6001600160a01b031690565b90565b6000610af9826114a7565b82818337506000910152565b60005b838110156114f35781810151838201526020016114db565b83811115610e2d5750506000910152565b601f01601f191690565b6115178161148a565b811461152257600080fd5b50565b61151781611495565b611517816114a7565b611517816114be56fea365627a7a72315820ca2aaf531ed3d692639fd8240fdf5db1c3918dc58f88e738d42af9ed907877fd6c6578706572696d656e74616cf564736f6c63430005100040", + "deployedBytecode": "0x6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b1461013f578063948f507614610161578063bf7e214f1461018e578063c72c4d10146101a3578063ee872558146101b857610091565b806313af4035146100935780631cff79cd146100b35780631f6a1eb9146100dc57806360c7d295146100fd5780637a9e5e4b1461011f575b005b34801561009f57600080fd5b506100916100ae366004610f07565b6101d8565b6100c66100c1366004610f4b565b610263565b6040516100d39190611372565b60405180910390f35b6100ef6100ea366004611039565b610347565b6040516100d3929190611344565b34801561010957600080fd5b50610112610475565b6040516100d39190611383565b34801561012b57600080fd5b5061009161013a36600461106f565b610484565b34801561014b57600080fd5b50610154610502565b6040516100d391906112f3565b34801561016d57600080fd5b5061018161017c366004610f07565b610511565b6040516100d39190611364565b34801561019a57600080fd5b506101126105cb565b3480156101af57600080fd5b506101126105da565b3480156101c457600080fd5b506100916101d3366004610f9d565b6105e9565b6101ee336000356001600160e01b031916610a21565b6102135760405162461bcd60e51b815260040161020a90611391565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b606061027b336000356001600160e01b031916610a21565b6102975760405162461bcd60e51b815260040161020a90611391565b60405160043590602435903490829084903390600080356001600160e01b031916916102c691879136906113ff565b60405180910390a46001600160a01b0386166102f45760405162461bcd60e51b815260040161020a906113c1565b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146103345761033b565b8160208801fd5b50505050505092915050565b6002546040516322fd145760e21b81526000916060916001600160a01b0390911690638bf4515c9061037d908790600401611372565b60206040518083038186803b15801561039557600080fd5b505afa1580156103a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103cd9190810190610f2d565b91506001600160a01b03821661046257600254604051633f6861d960e11b81526001600160a01b0390911690637ed0c3b29061040d908790600401611372565b602060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061045f9190810190610f2d565b91505b61046c8284610263565b90509250929050565b6002546001600160a01b031681565b61049a336000356001600160e01b031916610a21565b6104b65760405162461bcd60e51b815260040161020a90611391565b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000610529336000356001600160e01b031916610a21565b6105455760405162461bcd60e51b815260040161020a90611391565b60405160043590602435903490829084903390600080356001600160e01b0319169161057491879136906113ff565b60405180910390a46001600160a01b0385166105a25760405162461bcd60e51b815260040161020a906113e1565b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b6000546001600160a01b031681565b6003546001600160a01b031681565b6105ff336000356001600160e01b031916610a21565b61061b5760405162461bcd60e51b815260040161020a90611391565b600061062e84600263ffffffff610aff16565b9050600061067484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600c9250610b41915050565b905060606106bd85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506020925060049150610b779050565b9050606061070386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060849250610c0c915050565b90506060828960405160200161071991906113f1565b6040516020818303038152906040528960405160200161073991906113f1565b6040516020818303038152906040528760405160200161075991906113f1565b60408051601f198184030181529082905261077b9493929187906020016112a1565b60405160208183030381529060405290506107968482610263565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038b1614156108b15773773ccbfb422850617a5680d40b1260422d072f416107e286600263ffffffff610aff16565b6040516107ee906112e8565b60006040518083038185875af1925050503d806000811461082b576040519150601f19603f3d011682016040523d82523d6000602084013e610830565b606091505b5073abccb8f0a3c206bb0468c52ccc20f3b81077417b915061085b905086600263ffffffff610aff16565b604051610867906112e8565b60006040518083038185875af1925050503d80600081146108a4576040519150601f19603f3d011682016040523d82523d6000602084013e6108a9565b606091505b5050506109fc565b6001600160a01b038a1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f416108e688600263ffffffff610aff16565b6040518363ffffffff1660e01b8152600401610903929190611301565b602060405180830381600087803b15801561091d57600080fd5b505af1158015610931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610955919081019061101b565b506001600160a01b038a1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b61098b88600263ffffffff610aff16565b6040518363ffffffff1660e01b81526004016109a8929190611301565b602060405180830381600087803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109fa919081019061101b565b505b610a158a610a108b8b63ffffffff610c3c16565b610c61565b50505050505050505050565b60006001600160a01b038316301415610a3c57506001610af9565b6001546001600160a01b0384811691161415610a5a57506001610af9565b6000546001600160a01b0316610a7257506000610af9565b60005460405163b700961360e01b81526001600160a01b039091169063b700961390610aa69086903090879060040161131c565b60206040518083038186803b158015610abe57600080fd5b505afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610af6919081019061101b565b90505b92915050565b6000610af683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cf0565b60008160140183511015610b675760405162461bcd60e51b815260040161020a906113b1565b500160200151600160601b900490565b606081830184511015610b9c5760405162461bcd60e51b815260040161020a906113d1565b606082158015610bb757604051915060208201604052610c01565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610bf0578051835260209283019201610bd8565b5050858452601f01601f1916604052505b5090505b9392505050565b606082518210610c2e5760405162461bcd60e51b815260040161020a906113d1565b610af6838384865103610b77565b600082820183811015610af65760405162461bcd60e51b815260040161020a906113a1565b6003546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b158015610ca657600080fd5b505afa158015610cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cde9190810190610f2d565b9050610ceb818484610d27565b505050565b60008183610d115760405162461bcd60e51b815260040161020a9190611372565b506000838581610d1d57fe5b0495945050505050565b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610dad57826001600160a01b031681604051610d63906112e8565b60006040518083038185875af1925050503d8060008114610da0576040519150601f19603f3d011682016040523d82523d6000602084013e610da5565b606091505b505050610ceb565b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb90610ddb9086908590600401611301565b602060405180830381600087803b158015610df557600080fd5b505af1158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2d919081019061101b565b50505050565b8035610af98161150e565b8051610af98161150e565b8051610af981611525565b60008083601f840112610e6657600080fd5b50813567ffffffffffffffff811115610e7e57600080fd5b602083019150836001820283011115610e9657600080fd5b9250929050565b600082601f830112610eae57600080fd5b8135610ec1610ebc82611450565b611429565b91508082526020830160208301858383011115610edd57600080fd5b610ee88382846114cc565b50505092915050565b8035610af98161152e565b8035610af981611537565b600060208284031215610f1957600080fd5b6000610f258484610e33565b949350505050565b600060208284031215610f3f57600080fd5b6000610f258484610e3e565b60008060408385031215610f5e57600080fd5b6000610f6a8585610e33565b925050602083013567ffffffffffffffff811115610f8757600080fd5b610f9385828601610e9d565b9150509250929050565b600080600080600060808688031215610fb557600080fd5b6000610fc18888610e33565b9550506020610fd288828901610efc565b9450506040610fe388828901610efc565b935050606086013567ffffffffffffffff81111561100057600080fd5b61100c88828901610e54565b92509250509295509295909350565b60006020828403121561102d57600080fd5b6000610f258484610e49565b6000806040838503121561104c57600080fd5b823567ffffffffffffffff81111561106357600080fd5b610f6a85828601610e9d565b60006020828403121561108157600080fd5b6000610f258484610ef1565b611096816114c1565b82525050565b6110968161148a565b61109681611495565b6110968161149a565b60006110c3838561147c565b93506110d08385846114cc565b6110d983611504565b9093019392505050565b60006110ee82611478565b6110f8818561147c565b93506111088185602086016114d8565b6110d981611504565b600061111c82611478565b6111268185611485565b93506111368185602086016114d8565b9290920192915050565b611096816114a7565b600061115660148361147c565b73191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b815260200192915050565b6000611186601b8361147c565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006111bf60128361147c565b7152656164206f7574206f6620626f756e647360701b815260200192915050565b60006111ed60208361147c565b7f64732d70726f78792d7461726765742d616464726573732d7265717569726564815260200192915050565b6000610af9600083611485565b600061123360188361147c565b7f62797465732d726561642d6f75742d6f662d626f756e64730000000000000000815260200192915050565b600061126c601f8361147c565b7f64732d70726f78792d63616368652d616464726573732d726571756972656400815260200192915050565b611096816114be565b60006112ad8288611111565b91506112b98287611111565b91506112c58286611111565b91506112d18285611111565b91506112dd8284611111565b979650505050505050565b6000610af982611219565b60208101610af9828461109c565b6040810161130f828561108d565b610c056020830184611298565b6060810161132a828661109c565b611337602083018561109c565b610f2560408301846110ae565b60408101611352828561109c565b8181036020830152610f2581846110e3565b60208101610af982846110a5565b60208082528101610af681846110e3565b60208101610af98284611140565b60208082528101610af981611149565b60208082528101610af981611179565b60208082528101610af9816111b2565b60208082528101610af9816111e0565b60208082528101610af981611226565b60208082528101610af98161125f565b60208101610af98284611298565b6040810161140d8286611298565b81810360208301526114208184866110b7565b95945050505050565b60405181810167ffffffffffffffff8111828210171561144857600080fd5b604052919050565b600067ffffffffffffffff82111561146757600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b919050565b6000610af9826114b2565b151590565b6001600160e01b03191690565b6000610af98261148a565b6001600160a01b031690565b90565b6000610af9826114a7565b82818337506000910152565b60005b838110156114f35781810151838201526020016114db565b83811115610e2d5750506000910152565b601f01601f191690565b6115178161148a565b811461152257600080fd5b50565b61151781611495565b611517816114a7565b611517816114be56fea365627a7a72315820ca2aaf531ed3d692639fd8240fdf5db1c3918dc58f88e738d42af9ed907877fd6c6578706572696d656e74616cf564736f6c63430005100040", + "sourceMap": "318:2900:29:-;;;398:130:15;;;-1:-1:-1;;;;;;398:130:15;485:42;398:130;;;648:76:29;5:2:-1;;;;30:1;27;20:12;5:2;648:76:29;;;;;;;;;;;;;;;;;;;;;359:1;1066:18:17;;-1:-1:-1;;;;;;1066:18:17;1074:10;1066:18;;;;;1099:23;;;;-1:-1:-1;;1099:23:17;1221:20:21;1230:10;1221:8;:20::i;:::-;-1:-1:-1;697:20:29;;-1:-1:-1;706:10:29;697:8;:20::i;:::-;;648:76;318:2900;;2614:274:21;2710:4;1476:33:17;1489:10;1501:7;;-1:-1:-1;;;;;;1501:7:17;1476:12;:33::i;:::-;1468:66;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;;;1201:53:20;;1109:1;1096:15;;1144:2;1131:16;;1167:9;;1131:16;;1096:15;;1218:10;;1002:11;1209:7;;-1:-1:-1;;;;;;1209:7:20;;1201:53;;1167:9;;1245:8;;1201:53;;;;;;;;;;-1:-1:-1;;;;;2738:24:21;;2730:68;;;;-1:-1:-1;;;2730:68:21;;;;;;;;;-1:-1:-1;;2808:5:21;:32;;-1:-1:-1;;;;;;2808:32:21;-1:-1:-1;;;;;2808:32:21;;;;;;;;;;;-1:-1:-1;;;2614:274:21;-1:-1:-1;2614:274:21:o;1558:375:17:-;1628:4;1663;-1:-1:-1;;;;;1648:20:17;;;1644:283;;;-1:-1:-1;1691:4:17;1684:11;;1644:283;1723:5;;-1:-1:-1;;;;;1716:12:17;;;1723:5;;1716:12;1712:215;;;-1:-1:-1;1751:4:17;1744:11;;1712:215;1806:1;1784:9;-1:-1:-1;;;;;1784:9:17;1772:155;;-1:-1:-1;1831:5:17;1824:12;;1772:155;1874:9;;:42;;-1:-1:-1;;;1874:42:17;;-1:-1:-1;;;;;1874:9:17;;;;:17;;:42;;1892:3;;1905:4;;1912:3;;1874:42;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1874:42:17;;;;;;;;;1867:49;;1772:155;1558:375;;;;:::o;5:134:-1:-;83:13;;101:33;83:13;101:33;;146:128;221:13;;239:30;221:13;239:30;;281:263;;396:2;384:9;375:7;371:23;367:32;364:2;;;412:1;409;402:12;364:2;447:1;464:64;520:7;500:9;464:64;;;454:74;358:186;-1:-1;;;;358:186;551:257;;663:2;651:9;642:7;638:23;634:32;631:2;;;679:1;676;669:12;631:2;714:1;731:61;784:7;764:9;731:61;;815:113;898:24;916:5;898:24;;;893:3;886:37;880:48;;;935:110;1016:23;1033:5;1016:23;;1075:297;;1189:70;1252:6;1247:3;1189:70;;;1182:77;;1271:43;1307:6;1302:3;1295:5;1271:43;;;1336:29;1358:6;1336:29;;;1327:39;;;;1175:197;-1:-1;;;1175:197;1381:320;;1541:67;1605:2;1600:3;1541:67;;;-1:-1;;;1621:43;;1692:2;1683:12;;1527:174;-1:-1;;1527:174;1710:331;;1870:67;1934:2;1929:3;1870:67;;;1970:33;1950:54;;2032:2;2023:12;;1856:185;-1:-1;;1856:185;2049:113;2132:24;2150:5;2132:24;;2169:431;2341:2;2326:18;;2355:71;2330:9;2399:6;2355:71;;;2437:72;2505:2;2494:9;2490:18;2481:6;2437:72;;;2520:70;2586:2;2575:9;2571:18;2562:6;2520:70;;2607:407;2798:2;2812:47;;;2783:18;;2873:131;2783:18;2873:131;;3021:407;3212:2;3226:47;;;3197:18;;3287:131;3197:18;3287:131;;3435:428;3609:2;3594:18;;3623:71;3598:9;3667:6;3623:71;;;3742:9;3736:4;3732:20;3727:2;3716:9;3712:18;3705:48;3767:86;3848:4;3839:6;3831;3767:86;;;3759:94;3580:283;-1:-1;;;;;3580:283;3871:162;3973:19;;;4022:4;4013:14;;3966:67;4213:91;;4275:24;4293:5;4275:24;;4311:85;4377:13;4370:21;;4353:43;4403:144;-1:-1;;;;;;4464:78;;4447:100;4554:121;-1:-1;;;;;4616:54;;4599:76;4682:72;4744:5;4727:27;4762:145;4843:6;4838:3;4833;4820:30;-1:-1;4899:1;4881:16;;4874:27;4813:94;4915:97;5003:2;4983:14;-1:-1;;4979:28;;4963:49;5020:117;5089:24;5107:5;5089:24;;;5082:5;5079:35;5069:2;;5128:1;5125;5118:12;5069:2;5063:74;;5144:111;5210:21;5225:5;5210:21;;5184:71;318:2900:29;;;;;;", + "deployedSourceMap": "318:2900:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1135:130:17;;;;;;;;:::i;1748:840:21:-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1360:382;;;;;;;;;:::i;:::-;;;;;;;;;1109:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1109:25:21;;;:::i;:::-;;;;;;;;1271:167:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1271:167:17;;;;;;;;:::i;1002:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1002:26:17;;;:::i;:::-;;;;;;;;2614:274:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2614:274:21;;;;;;;;:::i;:::-;;;;;;;;966:30:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:30:17;;;:::i;398:130:15:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:130:15;;;:::i;801:2415:29:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;801:2415:29;;;;;;;;:::i;1135:130:17:-;1476:33;1489:10;-1:-1:-1;;;;;;1501:7:17;;;1476:12;:33::i;:::-;1468:66;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;;;1211:5;:14;;-1:-1:-1;;;;;;1211:14:17;-1:-1:-1;;;;;1211:14:17;;;;;;;;;;;1240:18;;1252:5;;;1240:18;;-1:-1:-1;;1240:18:17;1135:130;:::o;1748:840:21:-;1876:21;1476:33:17;1489:10;-1:-1:-1;;;;;;1501:7:17;;;1476:12;:33::i;:::-;1468:66;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;1201:53:20;;1109:1;1096:15;;1144:2;1131:16;;1167:9;;1131:16;;1096:15;;1218:10;;1002:11;1209:7;;-1:-1:-1;;;;;;1209:7:20;;1201:53;;1167:9;;1245:8;;1201:53;;;;;;;;;;-1:-1:-1;;;;;1921:21:21;;1913:66;;;;-1:-1:-1;;;1913:66:21;;;;;;;;;2147:1;2144;2136:5;2130:12;2123:4;2116:5;2112:16;2103:7;2096:4;2091:3;2087:14;2074:75;2174:14;2220:4;2214:11;2202:23;;2301:4;2297:9;2290:4;2283;2277;2273:15;2269:26;2265:42;2255:8;2251:57;2245:4;2238:71;2339:4;2329:8;2322:22;2396:4;2393:1;2386:4;2376:8;2372:19;2357:44;2429:9;2422:17;2457:1;2452:120;;;;2415:157;;2452:120;2553:4;2546;2536:8;2532:19;2525:33;2415:157;;2043:539;;1544:1:17;;;1748:840:21;;;;:::o;1360:382::-;1527:5;;:17;;-1:-1:-1;;;1527:17:21;;1465:14;;1481:21;;-1:-1:-1;;;;;1527:5:21;;;;:10;;:17;;1538:5;;1527:17;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:17:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1527:17:21;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1527:17:21;;;;;;;;;1518:26;-1:-1:-1;;;;;;1558:20:21;;1554:138;;1663:5;;:18;;-1:-1:-1;;;1663:18:21;;-1:-1:-1;;;;;1663:5:21;;;;:11;;:18;;1675:5;;1663:18;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1663:18:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1663:18:21;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1663:18:21;;;;;;;;;1654:27;;1554:138;1713:22;1721:6;1729:5;1713:7;:22::i;:::-;1702:33;;1360:382;;;;;:::o;1109:25::-;;;-1:-1:-1;;;;;1109:25:21;;:::o;1271:167:17:-;1476:33;1489:10;-1:-1:-1;;;;;;1501:7:17;;;1476:12;:33::i;:::-;1468:66;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;1359:9;:22;;-1:-1:-1;;;;;;1359:22:17;-1:-1:-1;;;;;1359:22:17;;;;;;;;;;1396:35;;1420:9;;;1396:35;;;1271:167;:::o;1002:26::-;;;-1:-1:-1;;;;;1002:26:17;;:::o;2614:274:21:-;2710:4;1476:33:17;1489:10;-1:-1:-1;;;;;;1501:7:17;;;1476:12;:33::i;:::-;1468:66;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;1201:53:20;;1109:1;1096:15;;1144:2;1131:16;;1167:9;;1131:16;;1096:15;;1218:10;;1002:11;1209:7;;-1:-1:-1;;;;;;1209:7:20;;1201:53;;1167:9;;1245:8;;1201:53;;;;;;;;;;-1:-1:-1;;;;;2738:24:21;;2730:68;;;;-1:-1:-1;;;2730:68:21;;;;;;;;;-1:-1:-1;;2808:5:21;:32;;-1:-1:-1;;;;;;2808:32:21;-1:-1:-1;;;;;2808:32:21;;;;;;;;;;;-1:-1:-1;;;2614:274:21;-1:-1:-1;2614:274:21:o;966:30:17:-;;;-1:-1:-1;;;;;966:30:17;;:::o;398:130:15:-;;;-1:-1:-1;;;;;398:130:15;;:::o;801:2415:29:-;1476:33:17;1489:10;-1:-1:-1;;;;;;1501:7:17;;;1476:12;:33::i;:::-;1468:66;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;1125:16:29;1144:11;:4;1153:1;1144:11;:8;:11;:::i;:::-;1125:30;;2122:21;2146:27;2161:7;;2146:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2170:2:29;;-1:-1:-1;2146:14:29;;-1:-1:-1;;2146:27:29:i;:::-;2122:51;;2183:17;2207:21;2213:7;;2207:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2222:2:29;;-1:-1:-1;2226:1:29;;-1:-1:-1;2207:5:29;;-1:-1:-1;2207:21:29:i;:::-;2183:45;;2238:17;2262:24;2273:7;;2262:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2282:3:29;;-1:-1:-1;2262:10:29;;-1:-1:-1;;2262:24:29:i;:::-;2238:48;;2408:20;2461:4;2490:7;2479:19;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2479:19:29;;;2523:4;2512:16;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2512:16:29;;;2553:11;2542:23;;;;;;;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;2542:23:29;;;;2431:162;;;;;2579:4;;49::-1;2431:162:29;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2431:162:29;;;2408:185;;2635:31;2643:13;2658:7;2635;:31::i;:::-;-1:-1:-1;;;;;;2712:54:29;;2724:42;2712:54;2708:408;;;498:42;2819:18;:11;2835:1;2819:18;:15;:18;:::i;:::-;2782:60;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;599:42:29;;-1:-1:-1;2893:18:29;;-1:-1:-1;2893:11:29;2909:1;2893:18;:15;:18;:::i;:::-;2856:60;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2856:60:29;;2708:408;;;-1:-1:-1;;;;;2947:25:29;;;498:42;3000:18;:11;3016:1;3000:15;:18::i;:::-;2947:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2947:72:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2947:72:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2947:72:29;;;;;;;;;-1:-1:-1;;;;;;3033:25:29;;;599:42;3086:18;:11;3102:1;3086:15;:18::i;:::-;3033:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3033:72:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3033:72:29;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3033:72:29;;;;;;;;;;2708:408;3149:60;3181:8;3191:17;:7;3203:4;3191:17;:11;:17;:::i;:::-;3149:31;:60::i;:::-;1544:1:17;;;;;801:2415:29;;;;;:::o;1558:375:17:-;1628:4;1663;-1:-1:-1;;;;;1648:20:17;;;1644:283;;;-1:-1:-1;1691:4:17;1684:11;;1644:283;1723:5;;-1:-1:-1;;;;;1716:12:17;;;1723:5;;1716:12;1712:215;;;-1:-1:-1;1751:4:17;1744:11;;1712:215;1806:1;1784:9;-1:-1:-1;;;;;1784:9:17;1772:155;;-1:-1:-1;1831:5:17;1824:12;;1772:155;1874:9;;:42;;-1:-1:-1;;;1874:42:17;;-1:-1:-1;;;;;1874:9:17;;;;-1:-1:-1;;1874:42:17;;1892:3;;1905:4;;1912:3;;1874:42;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1874:42:17;;;;;;;;;1867:49;;1772:155;1558:375;;;;:::o;3073:130:32:-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;3143:358:14:-;3227:7;3272:6;3281:2;3272:11;3254:6;:13;:30;;3246:61;;;;-1:-1:-1;;;3246:61:14;;;;;;;;;-1:-1:-1;3395:30:14;3411:4;3395:30;3389:37;-1:-1:-1;;;3385:71:14;;;3143:358::o;567:2570::-;713:12;776:7;767:6;:16;749:6;:13;:35;;741:72;;;;-1:-1:-1;;;741:72:14;;;;;;;;;824:22;887:15;;915:1967;;;;3023:4;3017:11;3004:24;;3074:4;3063:9;3059:20;3053:4;3046:34;880:2214;;915:1967;1097:4;1091:11;1078:24;;1756:2;1747:7;1743:16;2138:9;2131:17;2125:4;2121:28;2109:9;2098;2094:25;2090:60;2186:7;2182:2;2178:16;2438:6;2424:9;2417:17;2411:4;2407:28;2395:9;2387:6;2383:22;2379:57;2375:70;2212:425;2471:3;2467:2;2464:11;2212:425;;;2609:9;;2598:21;;2512:4;2504:13;;;;2544;2212:425;;;-1:-1:-1;;2655:26:14;;;2863:2;2846:11;-1:-1:-1;;2842:25:14;2836:4;2829:39;-1:-1:-1;880:2214:14;-1:-1:-1;3121:9:14;-1:-1:-1;567:2570:14;;;;;;:::o;256:301::-;358:12;399:6;:13;390:6;:22;382:59;;;;-1:-1:-1;;;382:59:14;;;;;;;;;459:91;478:6;498;534;518;:13;:22;459:5;:91::i;834:176:32:-;892:7;923:5;;;946:6;;;;938:46;;;;-1:-1:-1;;;938:46:32;;;;;;;;576:213:15;694:17;;:38;;;-1:-1:-1;;;694:38:15;;;;671:20;;-1:-1:-1;;;;;694:17:15;;:36;;:38;;;;;;;;;;;;;;:17;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;694:38:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;694:38:15;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;694:38:15;;;;;;;;;671:61;;742:40;759:4;764:8;774:7;742:16;:40::i;:::-;576:213;;;:::o;3718:338:32:-;3804:7;3904:12;3897:5;3889:28;;;;-1:-1:-1;;;3889:28:32;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:32:o;795:323:15:-;349:42;-1:-1:-1;;;;;909:22:15;;;906:147;;;986:36;;-1:-1:-1;;;;;986:17:15;;;1010:7;;986:36;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;986:36:15;;1036:7;;906:147;1063:48;;-1:-1:-1;;;1063:48:15;;-1:-1:-1;;;;;1063:25:15;;;-1:-1:-1;;1063:48:15;;1089:12;;1103:7;;1063:48;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1063:48:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1063:48:15;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1063:48:15;;;;;;;;;;795:323;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;440:128;515:13;;533:30;515:13;533:30;;589:336;;;703:3;696:4;688:6;684:17;680:27;670:2;;721:1;718;711:12;670:2;-1:-1;741:20;;781:18;770:30;;767:2;;;813:1;810;803:12;767:2;847:4;839:6;835:17;823:29;;898:3;890:4;882:6;878:17;868:8;864:32;861:41;858:2;;;915:1;912;905:12;858:2;663:262;;;;;;934:440;;1035:3;1028:4;1020:6;1016:17;1012:27;1002:2;;1053:1;1050;1043:12;1002:2;1090:6;1077:20;1112:64;1127:48;1168:6;1127:48;;;1112:64;;;1103:73;;1196:6;1189:5;1182:21;1232:4;1224:6;1220:17;1265:4;1258:5;1254:16;1300:3;1291:6;1286:3;1282:16;1279:25;1276:2;;;1317:1;1314;1307:12;1276:2;1327:41;1361:6;1356:3;1351;1327:41;;;995:379;;;;;;;;1382:170;1469:20;;1494:53;1469:20;1494:53;;1559:130;1626:20;;1651:33;1626:20;1651:33;;1696:241;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1851:1;1868:53;1913:7;1893:9;1868:53;;;1858:63;1762:175;-1:-1;;;;1762:175;1944:263;;2059:2;2047:9;2038:7;2034:23;2030:32;2027:2;;;2075:1;2072;2065:12;2027:2;2110:1;2127:64;2183:7;2163:9;2127:64;;2500:470;;;2630:2;2618:9;2609:7;2605:23;2601:32;2598:2;;;2646:1;2643;2636:12;2598:2;2681:1;2698:53;2743:7;2723:9;2698:53;;;2688:63;;2660:97;2816:2;2805:9;2801:18;2788:32;2840:18;2832:6;2829:30;2826:2;;;2872:1;2869;2862:12;2826:2;2892:62;2946:7;2937:6;2926:9;2922:22;2892:62;;;2882:72;;2767:193;2592:378;;;;;;2977:741;;;;;;3151:3;3139:9;3130:7;3126:23;3122:33;3119:2;;;3168:1;3165;3158:12;3119:2;3203:1;3220:53;3265:7;3245:9;3220:53;;;3210:63;;3182:97;3310:2;3328:53;3373:7;3364:6;3353:9;3349:22;3328:53;;;3318:63;;3289:98;3418:2;3436:53;3481:7;3472:6;3461:9;3457:22;3436:53;;;3426:63;;3397:98;3554:2;3543:9;3539:18;3526:32;3578:18;3570:6;3567:30;3564:2;;;3610:1;3607;3600:12;3564:2;3638:64;3694:7;3685:6;3674:9;3670:22;3638:64;;;3628:74;;;;3505:203;3113:605;;;;;;;;;3725:257;;3837:2;3825:9;3816:7;3812:23;3808:32;3805:2;;;3853:1;3850;3843:12;3805:2;3888:1;3905:61;3958:7;3938:9;3905:61;;3989:574;;;4128:2;4116:9;4107:7;4103:23;4099:32;4096:2;;;4144:1;4141;4134:12;4096:2;4179:31;;4230:18;4219:30;;4216:2;;;4262:1;4259;4252:12;4216:2;4282:62;4336:7;4327:6;4316:9;4312:22;4282:62;;4570:281;;4694:2;4682:9;4673:7;4669:23;4665:32;4662:2;;;4710:1;4707;4700:12;4662:2;4745:1;4762:73;4827:7;4807:9;4762:73;;4858:142;4949:45;4988:5;4949:45;;;4944:3;4937:58;4931:69;;;5007:113;5090:24;5108:5;5090:24;;5127:104;5204:21;5219:5;5204:21;;5238:110;5319:23;5336:5;5319:23;;5378:297;;5492:70;5555:6;5550:3;5492:70;;;5485:77;;5574:43;5610:6;5605:3;5598:5;5574:43;;;5639:29;5661:6;5639:29;;;5630:39;;;;5478:197;-1:-1;;;5478:197;5683:343;;5793:38;5825:5;5793:38;;;5843:70;5906:6;5901:3;5843:70;;;5836:77;;5918:52;5963:6;5958:3;5951:4;5944:5;5940:16;5918:52;;;5991:29;6013:6;5991:29;;6033:356;;6161:38;6193:5;6161:38;;;6211:88;6292:6;6287:3;6211:88;;;6204:95;;6304:52;6349:6;6344:3;6337:4;6330:5;6326:16;6304:52;;;6368:16;;;;;6141:248;-1:-1;;6141:248;6396:166;6499:57;6550:5;6499:57;;7306:320;;7466:67;7530:2;7525:3;7466:67;;;-1:-1;;;7546:43;;7617:2;7608:12;;;-1:-1;;7452:174;7635:327;;7795:67;7859:2;7854:3;7795:67;;;7895:29;7875:50;;7953:2;7944:12;;7781:181;-1:-1;;7781:181;7971:318;;8131:67;8195:2;8190:3;8131:67;;;-1:-1;;;8211:41;;8280:2;8271:12;;;-1:-1;;8117:172;8298:332;;8458:67;8522:2;8517:3;8458:67;;;8558:34;8538:55;;8621:2;8612:12;;8444:186;-1:-1;;8444:186;8639:296;;8816:83;8897:1;8892:3;8816:83;;8944:324;;9104:67;9168:2;9163:3;9104:67;;;9204:26;9184:47;;9259:2;9250:12;;9090:178;-1:-1;;9090:178;9277:331;;9437:67;9501:2;9496:3;9437:67;;;9537:33;9517:54;;9599:2;9590:12;;9423:185;-1:-1;;9423:185;9616:113;9699:24;9717:5;9699:24;;9736:890;;10064:93;10153:3;10144:6;10064:93;;;10057:100;;10175:93;10264:3;10255:6;10175:93;;;10168:100;;10286:93;10375:3;10366:6;10286:93;;;10279:100;;10397:93;10486:3;10477:6;10397:93;;;10390:100;;10508:93;10597:3;10588:6;10508:93;;;10501:100;10045:581;-1:-1;;;;;;;10045:581;10633:370;;10831:147;10974:3;10831:147;;11010:213;11128:2;11113:18;;11142:71;11117:9;11186:6;11142:71;;11230:340;11384:2;11369:18;;11398:79;11373:9;11450:6;11398:79;;;11488:72;11556:2;11545:9;11541:18;11532:6;11488:72;;11577:431;11749:2;11734:18;;11763:71;11738:9;11807:6;11763:71;;;11845:72;11913:2;11902:9;11898:18;11889:6;11845:72;;;11928:70;11994:2;11983:9;11979:18;11970:6;11928:70;;12015:408;12179:2;12164:18;;12193:71;12168:9;12237:6;12193:71;;;12312:9;12306:4;12302:20;12297:2;12286:9;12282:18;12275:48;12337:76;12408:4;12399:6;12337:76;;12430:201;12542:2;12527:18;;12556:65;12531:9;12594:6;12556:65;;12638:297;12774:2;12788:47;;;12759:18;;12849:76;12759:18;12911:6;12849:76;;12942:253;13080:2;13065:18;;13094:91;13069:9;13158:6;13094:91;;14066:407;14257:2;14271:47;;;14242:18;;14332:131;14242:18;14332:131;;14480:407;14671:2;14685:47;;;14656:18;;14746:131;14656:18;14746:131;;14894:407;15085:2;15099:47;;;15070:18;;15160:131;15070:18;15160:131;;15308:407;15499:2;15513:47;;;15484:18;;15574:131;15484:18;15574:131;;15722:407;15913:2;15927:47;;;15898:18;;15988:131;15898:18;15988:131;;16136:407;16327:2;16341:47;;;16312:18;;16402:131;16312:18;16402:131;;16550:213;16668:2;16653:18;;16682:71;16657:9;16726:6;16682:71;;16770:428;16944:2;16929:18;;16958:71;16933:9;17002:6;16958:71;;;17077:9;17071:4;17067:20;17062:2;17051:9;17047:18;17040:48;17102:86;17183:4;17174:6;17166;17102:86;;;17094:94;16915:283;-1:-1;;;;;16915:283;17205:256;17267:2;17261:9;17293:17;;;17368:18;17353:34;;17389:22;;;17350:62;17347:2;;;17425:1;17422;17415:12;17347:2;17441;17434:22;17245:216;;-1:-1;17245:216;17468:321;;17611:18;17603:6;17600:30;17597:2;;;17643:1;17640;17633:12;17597:2;-1:-1;;;17710:4;17687:17;;;;17683:33;17774:4;17764:15;;17534:255;17796:121;17883:12;;17854:63;18054:162;18156:19;;;18205:4;18196:14;;18149:67;18225:144;18360:3;18338:31;-1:-1;18338:31;18549:91;;18611:24;18629:5;18611:24;;18753:85;18819:13;18812:21;;18795:43;18845:144;-1:-1;;;;;;18906:78;;18889:100;18996:111;;19078:24;19096:5;19078:24;;19114:121;-1:-1;;;;;19176:54;;19159:76;19242:72;19304:5;19287:27;19321:129;;19408:37;19439:5;19408:37;;20664:145;20745:6;20740:3;20735;20722:30;-1:-1;20801:1;20783:16;;20776:27;20715:94;20818:268;20883:1;20890:101;20904:6;20901:1;20898:13;20890:101;;;20971:11;;;20965:18;20952:11;;;20945:39;20926:2;20919:10;20890:101;;;21006:6;21003:1;21000:13;20997:2;;;-1:-1;;21071:1;21053:16;;21046:27;20867:219;21094:97;21182:2;21162:14;-1:-1;;21158:28;;21142:49;21199:117;21268:24;21286:5;21268:24;;;21261:5;21258:35;21248:2;;21307:1;21304;21297:12;21248:2;21242:74;;21463:111;21529:21;21544:5;21529:21;;21581:157;21670:44;21708:5;21670:44;;21745:117;21814:24;21832:5;21814:24;", "source": "/*\n Main contract to handle Aave flashloans on Compound Finance.\n (D)edge's (A)ave (C)ommon Proxy.\n*/\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\nimport \"../lib/BytesLib.sol\";\nimport \"../lib/aave/FlashLoanReceiverBase.sol\";\nimport \"../lib/dapphub/Proxy.sol\";\n\nimport \"../interfaces/IERC20.sol\";\n\ncontract DACProxy is\n DSProxy(address(1)),\n FlashLoanReceiverBase,\n BytesLibLite\n{\n // TODO: Change this value\n address payable constant protocolFeePayoutAddress1 = 0x773CCbFB422850617A5680D40B1260422d072f41;\n address payable constant protocolFeePayoutAddress2 = 0xAbcCB8f0a3c206Bb0468C52CCc20f3b81077417B;\n\n constructor(address _cacheAddr) public {\n setCache(_cacheAddr);\n }\n\n function() external payable {}\n\n // This is for Aave flashloans\n function executeOperation(\n address _reserve,\n uint256 _amount,\n uint256 _fee,\n bytes calldata _params\n ) external\n auth\n {\n // Assumes that once the action(s) are performed\n // we will have totalDebt would of _reserve to repay\n // aave and the protocol\n uint protocolFee = _fee.div(2);\n\n // Re-encodes new data \n // Function signature should conform to:\n /* (\n // Note: for address, as abiEncoder pads it to 32 bytes our starting position is 12\n // due to addresses having 20 bytes in length\n address - Address to call | start: 12; (20 bytes)\n bytes - Function sig | start: 32; (4 bytes)\n uint - Data of _amount | start: 36; (32 bytes)\n uint - Data of _aaveFee | start: 68; (32 bytes)\n uint - Data of _protocolFee | start: 100; (32 bytes)\n bytes - Data of _data | start: 132; (dynamic length)\n )\n\n i.e.\n\n function myFunction(\n uint amount,\n uint aaveFee,\n uint protocolFee,\n bytes memory _data\n ) { ... }\n */\n address targetAddress = bytesToAddress(_params, 12);\n bytes memory fSig = slice(_params, 32, 4);\n bytes memory data = sliceToEnd(_params, 132);\n\n // Re-encodes function signature and injects new\n // _amount, _fee, and _protocolFee into _data\n bytes memory newData = abi.encodePacked(\n fSig,\n abi.encode(_amount),\n abi.encode(_fee),\n abi.encode(protocolFee),\n data\n );\n\n // Executes new target\n execute(targetAddress, newData);\n\n // Repays protocol fee\n if (_reserve == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {\n protocolFeePayoutAddress1.call.value(protocolFee.div(2))(\"\");\n protocolFeePayoutAddress2.call.value(protocolFee.div(2))(\"\");\n } else {\n IERC20(_reserve).transfer(protocolFeePayoutAddress1, protocolFee.div(2));\n IERC20(_reserve).transfer(protocolFeePayoutAddress2, protocolFee.div(2));\n }\n\n // Repays aave\n transferFundsBackToPoolInternal(_reserve, _amount.add(_fee));\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol", "ast": { @@ -5065,7 +5065,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T04:44:07.219Z", + "updatedAt": "2020-04-03T06:25:13.645Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DACProxyFactory.json b/packages/smart-contracts/artifacts/DACProxyFactory.json index 4d2d07c..f31212c 100644 --- a/packages/smart-contracts/artifacts/DACProxyFactory.json +++ b/packages/smart-contracts/artifacts/DACProxyFactory.json @@ -183,11 +183,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cache\",\"type\":\"address\"}],\"name\":\"Created\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"proxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dedgeCompoundManager\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"enterMarketCalldata\",\"type\":\"bytes\"}],\"name\":\"buildAndEnterMarkets\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeCompoundManager\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"enterMarketCalldata\",\"type\":\"bytes\"}],\"name\":\"buildAndEnterMarkets\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dsGuardFactory\",\"outputs\":[{\"internalType\":\"contract DSGuardFactory\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"proxies\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol\":\"DACProxyFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol\":{\"keccak256\":\"0x4fc914255b0bf8c2d9b45c76a864a3c02f1081fe07889126d14f103c37755da1\",\"urls\":[\"bzz-raw://ab17e6aea566c49b8a78f4ef97e0f955b7d0d4bcb1f2c940c4550f64929d889d\",\"dweb:/ipfs/QmUub8jb28wXQRnvLZTZmrYN58xFZTro5gZAhZHseBZMbf\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b5060405161001d906100e8565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051610086906100f6565b604051809103906000f0801580156100a2573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610104565b6103548062003cc583390190565b6113d9806200401983390190565b613bb180620001146000396000f3fe60806040523480156200001157600080fd5b5060043610620000885760003560e01c80638e1a55fc11620000635780638e1a55fc1462000266578063c455279114620002b2578063ddd2d6ac1462000339578063f3701da2146200045a5762000088565b80632e5c9848146200008d57806360c7d29514620000d95780636456568b1462000125575b600080fd5b62000097620004e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620000e362000507565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000224600480360360608110156200013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200019b57600080fd5b820183602082011115620001ae57600080fd5b80359060200191846001830284011164010000000083111715620001d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506200052d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200027062000c8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620002f760048036036020811015620002ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000418600480360360408110156200035157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200038f57600080fd5b820183602082011115620003a257600080fd5b80359060200191846001830284011164010000000083111715620003c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505062000cd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200049f600480360360208110156200047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ce7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000628576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000c84565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065b9062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620006ae573d6000803e3d6000fd5b5090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200080557600080fd5b505af11580156200081a573d6000803e3d6000fd5b505050506040513d60208110156200083157600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620008c457600080fd5b505af1158015620008d9573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631cff79cd86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200097e57808201518184015260208101905062000961565b50505050905090810190601f168015620009ac5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015620009cd57600080fd5b505af1158015620009e2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101562000a0d57600080fd5b810190808051604051939291908464010000000082111562000a2e57600080fd5b8382019150602082018581111562000a4557600080fd5b825186600182028301116401000000008211171562000a6357600080fd5b8083526020830192505050908051906020019080838360005b8381101562000a9957808201518184015260208101905062000a7c565b50505050905090810190601f16801562000ac75780820380516001836020036101000a031916815260200191505b50604052505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000b4f57600080fd5b505af115801562000b64573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000be857600080fd5b505af115801562000bfd573d6000803e3d6000fd5b50505050816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b9392505050565b600062000c983362000ce7565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062000cdf3384846200052d565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000de2576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506200124c565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000e159062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000e68573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562000fbf57600080fd5b505af115801562000fd4573d6000803e3d6000fd5b505050506040513d602081101562000feb57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200107e57600080fd5b505af115801562001093573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200111757600080fd5b505af11580156200112c573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620011b057600080fd5b505af1158015620011c5573d6000803e3d6000fd5b50505050816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b919050565b61291d80620012608339019056fe60806040527324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b506040516200291d3803806200291d83398181016040526200008c9190810190620004f2565b600133600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a262000123816200013e60201b60201c565b505062000136816200013e60201b60201c565b5050620007d7565b600062000176336000357fffffffff00000000000000000000000000000000000000000000000000000000166200030460201b60201c565b620001b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001af9062000671565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916846000366040516200023c93929190620006b5565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ae9062000693565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003455760019050620004be565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003a65760019050620004be565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620004075760009050620004be565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401620004679392919062000634565b60206040518083038186803b1580156200048057600080fd5b505afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004bb91908101906200051e565b90505b92915050565b600081519050620004d581620007a3565b92915050565b600081519050620004ec81620007bd565b92915050565b6000602082840312156200050557600080fd5b60006200051584828501620004c4565b91505092915050565b6000602082840312156200053157600080fd5b60006200054184828501620004db565b91505092915050565b62000555816200070d565b82525050565b62000566816200072d565b82525050565b60006200057a8385620006eb565b93506200058983858462000783565b620005948362000792565b840190509392505050565b6000620005ae601483620006fc565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000620005f0601f83620006fc565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b6200062e8162000779565b82525050565b60006060820190506200064b60008301866200054a565b6200065a60208301856200054a565b6200066960408301846200055b565b949350505050565b600060208201905081810360008301526200068c816200059f565b9050919050565b60006020820190508181036000830152620006ae81620005e1565b9050919050565b6000604082019050620006cc600083018662000623565b8181036020830152620006e18184866200056c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200071a8262000759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b620007ae816200070d565b8114620007ba57600080fd5b50565b620007c88162000721565b8114620007d457600080fd5b50565b61213680620007e76000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b591908101906116a0565b610258565b005b6100d660048036036100d1919081019061171b565b61036e565b6040516100e39190611cb5565b60405180910390f35b61010660048036036101019190810190611818565b61052a565b604051610114929190611c6a565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611cf2565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611884565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611bef565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be91908101906116a0565b610833565b6040516101d09190611c9a565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611cd7565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611d0d565b60405180910390f35b34801561023b57600080fd5b506102566004803603610251919081019061176f565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611d4a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611daa565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611cb5565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d991908101906116c9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611cb5565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd91908101906116c9565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611d4a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611dea565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611d4a565b60405180910390fd5b6000610ab76002856110fc90919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c611146565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050602060046111b3565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506084611275565b905060608289604051602001610bc89190611e0a565b60405160208183030381529060405289604051602001610be89190611e0a565b60405160208183030381529060405287604051602001610c089190611e0a565b60405160208183030381529060405285604051602001610c2c959493929190611b8f565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610db55773773ccbfb422850617a5680d40b1260422d072f4173ffffffffffffffffffffffffffffffffffffffff16610ccf6002876110fc90919063ffffffff16565b604051610cdb90611bda565b60006040518083038185875af1925050503d8060008114610d18576040519150601f19603f3d011682016040523d82523d6000602084013e610d1d565b606091505b50505073abccb8f0a3c206bb0468c52ccc20f3b81077417b73ffffffffffffffffffffffffffffffffffffffff16610d5f6002876110fc90919063ffffffff16565b604051610d6b90611bda565b60006040518083038185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b505050610f20565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f41610dfa6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610e17929190611c0a565b602060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6991908101906117ef565b508973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b610eaf6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610ecc929190611c0a565b602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f1e91908101906117ef565b505b610f3c8a610f378a8c6112d090919063ffffffff16565b611325565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8757600190506110f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe657600190506110f6565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561104557600090506110f6565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b81526004016110a393929190611c33565b60206040518083038186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f391908101906117ef565b90505b92915050565b600061113e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113d9565b905092915050565b6000601482018351101561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690611d8a565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290611dca565b60405180910390fd5b606082156000811461121857604051915060208201604052611269565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112565780518352602083019250602081019050611239565b50868552601f19601f8301166040525050505b50809150509392505050565b6060825182106112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611dca565b60405180910390fd5b6112c88383848651036111b3565b905092915050565b60008082840190508381101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290611d6a565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561138f57600080fd5b505afa1580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906116f2565b90506113d481848461143a565b505050565b60008083118290611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179190611d28565b60405180910390fd5b50600083858161142c57fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f0578273ffffffffffffffffffffffffffffffffffffffff16816040516114a690611bda565b60006040518083038185875af1925050503d80600081146114e3576040519150601f19603f3d011682016040523d82523d6000602084013e6114e8565b606091505b50505061157f565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161152b929190611c0a565b602060405180830381600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157d91908101906117ef565b505b505050565b60008135905061159381612080565b92915050565b6000815190506115a881612080565b92915050565b6000815190506115bd81612097565b92915050565b6000815190506115d2816120ae565b92915050565b60008083601f8401126115ea57600080fd5b8235905067ffffffffffffffff81111561160357600080fd5b60208301915083600182028301111561161b57600080fd5b9250929050565b600082601f83011261163357600080fd5b813561164661164182611e84565b611e57565b9150808252602083016020830185838301111561166257600080fd5b61166d83828461202d565b50505092915050565b600081359050611685816120c5565b92915050565b60008135905061169a816120dc565b92915050565b6000602082840312156116b257600080fd5b60006116c084828501611584565b91505092915050565b6000602082840312156116db57600080fd5b60006116e984828501611599565b91505092915050565b60006020828403121561170457600080fd5b6000611712848285016115ae565b91505092915050565b6000806040838503121561172e57600080fd5b600061173c85828601611584565b925050602083013567ffffffffffffffff81111561175957600080fd5b61176585828601611622565b9150509250929050565b60008060008060006080868803121561178757600080fd5b600061179588828901611584565b95505060206117a68882890161168b565b94505060406117b78882890161168b565b935050606086013567ffffffffffffffff8111156117d457600080fd5b6117e0888289016115d8565b92509250509295509295909350565b60006020828403121561180157600080fd5b600061180f848285016115c3565b91505092915050565b6000806040838503121561182b57600080fd5b600083013567ffffffffffffffff81111561184557600080fd5b61185185828601611622565b925050602083013567ffffffffffffffff81111561186e57600080fd5b61187a85828601611622565b9150509250929050565b60006020828403121561189657600080fd5b60006118a484828501611676565b91505092915050565b6118b681611f8b565b82525050565b6118c581611ef3565b82525050565b6118d481611f17565b82525050565b6118e381611f23565b82525050565b60006118f58385611ec6565b935061190283858461202d565b61190b8361206f565b840190509392505050565b600061192182611eb0565b61192b8185611ec6565b935061193b81856020860161203c565b6119448161206f565b840191505092915050565b600061195a82611eb0565b6119648185611ed7565b935061197481856020860161203c565b80840191505092915050565b61198981611f9d565b82525050565b61199881611fc1565b82525050565b6119a781611fe5565b82525050565b60006119b882611ebb565b6119c28185611ee2565b93506119d281856020860161203c565b6119db8161206f565b840191505092915050565b60006119f3601483611ee2565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000611a33601b83611ee2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611a73601283611ee2565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611ab3602083611ee2565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611af3600083611ed7565b9150600082019050919050565b6000611b0d601883611ee2565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b6000611b4d601f83611ee2565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611b8981611f81565b82525050565b6000611b9b828861194f565b9150611ba7828761194f565b9150611bb3828661194f565b9150611bbf828561194f565b9150611bcb828461194f565b91508190509695505050505050565b6000611be582611ae6565b9150819050919050565b6000602082019050611c0460008301846118bc565b92915050565b6000604082019050611c1f60008301856118ad565b611c2c6020830184611b80565b9392505050565b6000606082019050611c4860008301866118bc565b611c5560208301856118bc565b611c6260408301846118da565b949350505050565b6000604082019050611c7f60008301856118bc565b8181036020830152611c918184611916565b90509392505050565b6000602082019050611caf60008301846118cb565b92915050565b60006020820190508181036000830152611ccf8184611916565b905092915050565b6000602082019050611cec6000830184611980565b92915050565b6000602082019050611d07600083018461198f565b92915050565b6000602082019050611d22600083018461199e565b92915050565b60006020820190508181036000830152611d4281846119ad565b905092915050565b60006020820190508181036000830152611d63816119e6565b9050919050565b60006020820190508181036000830152611d8381611a26565b9050919050565b60006020820190508181036000830152611da381611a66565b9050919050565b60006020820190508181036000830152611dc381611aa6565b9050919050565b60006020820190508181036000830152611de381611b00565b9050919050565b60006020820190508181036000830152611e0381611b40565b9050919050565b6000602082019050611e1f6000830184611b80565b92915050565b6000604082019050611e3a6000830186611b80565b8181036020830152611e4d8184866118e9565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611e7a57600080fd5b8060405250919050565b600067ffffffffffffffff821115611e9b57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611efe82611f61565b9050919050565b6000611f1082611f61565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611f5a82611ef3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f9682612009565b9050919050565b6000611fa882611faf565b9050919050565b6000611fba82611f61565b9050919050565b6000611fcc82611fd3565b9050919050565b6000611fde82611f61565b9050919050565b6000611ff082611ff7565b9050919050565b600061200282611f61565b9050919050565b60006120148261201b565b9050919050565b600061202682611f61565b9050919050565b82818337600083830152505050565b60005b8381101561205a57808201518184015260208101905061203f565b83811115612069576000848401525b50505050565b6000601f19601f8301169050919050565b61208981611ef3565b811461209457600080fd5b50565b6120a081611f05565b81146120ab57600080fd5b50565b6120b781611f17565b81146120c257600080fd5b50565b6120ce81611f4f565b81146120d957600080fd5b50565b6120e581611f81565b81146120f057600080fd5b5056fea365627a7a72315820a7e949e4f7bad72e45825d8ae15370f38f5f0a3f0755fc55d0f5833c02f1aa736c6578706572696d656e74616cf564736f6c63430005100040a265627a7a723158209e84e9dd3f6235e0625e94e4ffdac73a8ed158770886313cb62353a9ba1b6ca964736f6c63430005100032608060405234801561001057600080fd5b50610334806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c14610136575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610231565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ef6004803603602081101561014c57600080fd5b810190808035906020019064010000000081111561016957600080fd5b82018360208201111561017b57600080fd5b8035906020019184600183028401116401000000008311171561019d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008151602083016000f09050803b156001811461024e57610253565b600080fd5b506000828051906020012090508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000808280519060200120905060008082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505091905056fea265627a7a723158205c680b90a403d8f037d25bb23ad3d42a182a729375fb7624c7649d88b0d8024d64736f6c63430005100032608060405234801561001057600080fd5b506113b9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063489c12021461003b57806365688cc914610097575b600080fd5b61007d6004803603602081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100e1565b604051808215151515815260200191505060405180910390f35b61009f610101565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006020528060005260406000206000915054906101000a900460ff1681565b600060405161010f9061021f565b604051809103906000f08015801561012b573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff166313af4035336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101ad57600080fd5b505af11580156101c1573d6000803e3d6000fd5b5050505060016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555090565b6111588061022d8339019056fe608060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a26110c1806100976000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610225578063b700961314610243578063bf7e214f146102e8578063cbeea68c14610332578063f0217ce5146103a05761009e565b806313af4035146100a35780632bc3217d146100e757806379d88d87146101555780637a9e5e4b146101975780638da5cb5b146101db575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e2565b005b610153600480360360608110156100fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061052b565b005b6101956004803603606081101561016b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061055f565b005b6101d9600480360360208110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610681565b005b6101e36107c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61022d6107ee565b6040518082815260200191505060405180910390f35b6102ce6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610815565b604051808215151515815260200191505060405180910390f35b6102f0610cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039e6004803603606081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cdd565b005b6103e0600480360360608110156103b657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610d11565b005b610410336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b61055a8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff19168361055f565b505050565b61058d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b6105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282960405160405180910390a4505050565b6106af336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b6000808460601b6bffffffffffffffffffffffff1916905060008460601b6bffffffffffffffffffffffff191690506002600083815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1680610913575060026000838152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b8061099f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610a2f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610abb5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610b4b5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610bfa5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610cad5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b925050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d0c8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff191683610d11565b505050565b610d3f336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610db1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6001600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677160405160405180910390a4505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e725760019050611086565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed15760019050611086565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f305760009050611086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a72315820b36af45f5c962802069634aca499d531cac1aeed514356b0d518c59cf816ca6264736f6c63430005100032a265627a7a72315820d6ccd940a34df05dafa52f7ac464e1ab24ab9ff1abc8fa0695cd58194adda98164736f6c63430005100032", - "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000885760003560e01c80638e1a55fc11620000635780638e1a55fc1462000266578063c455279114620002b2578063ddd2d6ac1462000339578063f3701da2146200045a5762000088565b80632e5c9848146200008d57806360c7d29514620000d95780636456568b1462000125575b600080fd5b62000097620004e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620000e362000507565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000224600480360360608110156200013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200019b57600080fd5b820183602082011115620001ae57600080fd5b80359060200191846001830284011164010000000083111715620001d157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506200052d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200027062000c8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b620002f760048036036020811015620002ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000418600480360360408110156200035157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156200038f57600080fd5b820183602082011115620003a257600080fd5b80359060200191846001830284011164010000000083111715620003c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505062000cd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200049f600480360360208110156200047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ce7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000628576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000c84565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065b9062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620006ae573d6000803e3d6000fd5b5090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200080557600080fd5b505af11580156200081a573d6000803e3d6000fd5b505050506040513d60208110156200083157600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620008c457600080fd5b505af1158015620008d9573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631cff79cd86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200097e57808201518184015260208101905062000961565b50505050905090810190601f168015620009ac5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015620009cd57600080fd5b505af1158015620009e2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101562000a0d57600080fd5b810190808051604051939291908464010000000082111562000a2e57600080fd5b8382019150602082018581111562000a4557600080fd5b825186600182028301116401000000008211171562000a6357600080fd5b8083526020830192505050908051906020019080838360005b8381101562000a9957808201518184015260208101905062000a7c565b50505050905090810190601f16801562000ac75780820380516001836020036101000a031916815260200191505b50604052505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000b4f57600080fd5b505af115801562000b64573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000be857600080fd5b505af115801562000bfd573d6000803e3d6000fd5b50505050816000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b9392505050565b600062000c983362000ce7565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062000cdf3384846200052d565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000de2576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506200124c565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405162000e159062001251565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000e68573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a36000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365688cc96040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562000fbf57600080fd5b505af115801562000fd4573d6000803e3d6000fd5b505050506040513d602081101562000feb57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200107e57600080fd5b505af115801562001093573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200111757600080fd5b505af11580156200112c573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620011b057600080fd5b505af1158015620011c5573d6000803e3d6000fd5b50505050816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081925050505b919050565b61291d80620012608339019056fe60806040527324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b506040516200291d3803806200291d83398181016040526200008c9190810190620004f2565b600133600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a262000123816200013e60201b60201c565b505062000136816200013e60201b60201c565b5050620007d7565b600062000176336000357fffffffff00000000000000000000000000000000000000000000000000000000166200030460201b60201c565b620001b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001af9062000671565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916846000366040516200023c93929190620006b5565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ae9062000693565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003455760019050620004be565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003a65760019050620004be565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620004075760009050620004be565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401620004679392919062000634565b60206040518083038186803b1580156200048057600080fd5b505afa15801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004bb91908101906200051e565b90505b92915050565b600081519050620004d581620007a3565b92915050565b600081519050620004ec81620007bd565b92915050565b6000602082840312156200050557600080fd5b60006200051584828501620004c4565b91505092915050565b6000602082840312156200053157600080fd5b60006200054184828501620004db565b91505092915050565b62000555816200070d565b82525050565b62000566816200072d565b82525050565b60006200057a8385620006eb565b93506200058983858462000783565b620005948362000792565b840190509392505050565b6000620005ae601483620006fc565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000620005f0601f83620006fc565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b6200062e8162000779565b82525050565b60006060820190506200064b60008301866200054a565b6200065a60208301856200054a565b6200066960408301846200055b565b949350505050565b600060208201905081810360008301526200068c816200059f565b9050919050565b60006020820190508181036000830152620006ae81620005e1565b9050919050565b6000604082019050620006cc600083018662000623565b8181036020830152620006e18184866200056c565b9050949350505050565b600082825260208201905092915050565b600082825260208201905092915050565b60006200071a8262000759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b620007ae816200070d565b8114620007ba57600080fd5b50565b620007c88162000721565b8114620007d457600080fd5b50565b61213680620007e76000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b14610171578063948f50761461019c578063bf7e214f146101d9578063c72c4d1014610204578063ee8725581461022f57610091565b806313af4035146100935780631cff79cd146100bc5780631f6a1eb9146100ec57806360c7d2951461011d5780637a9e5e4b14610148575b005b34801561009f57600080fd5b506100ba60048036036100b591908101906116a0565b610258565b005b6100d660048036036100d1919081019061171b565b61036e565b6040516100e39190611cb5565b60405180910390f35b61010660048036036101019190810190611818565b61052a565b604051610114929190611c6a565b60405180910390f35b34801561012957600080fd5b506101326106d3565b60405161013f9190611cf2565b60405180910390f35b34801561015457600080fd5b5061016f600480360361016a9190810190611884565b6106f9565b005b34801561017d57600080fd5b5061018661080d565b6040516101939190611bef565b60405180910390f35b3480156101a857600080fd5b506101c360048036036101be91908101906116a0565b610833565b6040516101d09190611c9a565b60405180910390f35b3480156101e557600080fd5b506101ee6109e9565b6040516101fb9190611cd7565b60405180910390f35b34801561021057600080fd5b50610219610a0e565b6040516102269190611d0d565b60405180910390f35b34801561023b57600080fd5b506102566004803603610251919081019061176f565b610a34565b005b610286336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6102c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611d4a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b606061039e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6103dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d490611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161045f93929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ce90611daa565b60405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146105175761051e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004016105899190611cb5565b60206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105d991908101906116c9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106c057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b815260040161066b9190611cb5565b602060405180830381600087803b15801561068557600080fd5b505af1158015610699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106bd91908101906116c9565b91505b6106ca828461036e565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610727336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90611d4a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610863336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b6108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990611d4a565b60405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405161092493929190611e25565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099390611dea565b60405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a62336000357fffffffff0000000000000000000000000000000000000000000000000000000016610f48565b610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9890611d4a565b60405180910390fd5b6000610ab76002856110fc90919063ffffffff16565b90506000610b0a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600c611146565b90506060610b5f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050602060046111b3565b90506060610bb286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506084611275565b905060608289604051602001610bc89190611e0a565b60405160208183030381529060405289604051602001610be89190611e0a565b60405160208183030381529060405287604051602001610c089190611e0a565b60405160208183030381529060405285604051602001610c2c959493929190611b8f565b6040516020818303038152906040529050610c47848261036e565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610db55773773ccbfb422850617a5680d40b1260422d072f4173ffffffffffffffffffffffffffffffffffffffff16610ccf6002876110fc90919063ffffffff16565b604051610cdb90611bda565b60006040518083038185875af1925050503d8060008114610d18576040519150601f19603f3d011682016040523d82523d6000602084013e610d1d565b606091505b50505073abccb8f0a3c206bb0468c52ccc20f3b81077417b73ffffffffffffffffffffffffffffffffffffffff16610d5f6002876110fc90919063ffffffff16565b604051610d6b90611bda565b60006040518083038185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b505050610f20565b8973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f41610dfa6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610e17929190611c0a565b602060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6991908101906117ef565b508973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b610eaf6002896110fc90919063ffffffff16565b6040518363ffffffff1660e01b8152600401610ecc929190611c0a565b602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f1e91908101906117ef565b505b610f3c8a610f378a8c6112d090919063ffffffff16565b611325565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8757600190506110f6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe657600190506110f6565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561104557600090506110f6565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b81526004016110a393929190611c33565b60206040518083038186803b1580156110bb57600080fd5b505afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110f391908101906117ef565b90505b92915050565b600061113e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113d9565b905092915050565b6000601482018351101561118f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118690611d8a565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290611dca565b60405180910390fd5b606082156000811461121857604051915060208201604052611269565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112565780518352602083019250602081019050611239565b50868552601f19601f8301166040525050505b50809150509392505050565b6060825182106112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b190611dca565b60405180910390fd5b6112c88383848651036111b3565b905092915050565b60008082840190508381101561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290611d6a565b60405180910390fd5b8091505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561138f57600080fd5b505afa1580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906116f2565b90506113d481848461143a565b505050565b60008083118290611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179190611d28565b60405180910390fd5b50600083858161142c57fe5b049050809150509392505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f0578273ffffffffffffffffffffffffffffffffffffffff16816040516114a690611bda565b60006040518083038185875af1925050503d80600081146114e3576040519150601f19603f3d011682016040523d82523d6000602084013e6114e8565b606091505b50505061157f565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161152b929190611c0a565b602060405180830381600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157d91908101906117ef565b505b505050565b60008135905061159381612080565b92915050565b6000815190506115a881612080565b92915050565b6000815190506115bd81612097565b92915050565b6000815190506115d2816120ae565b92915050565b60008083601f8401126115ea57600080fd5b8235905067ffffffffffffffff81111561160357600080fd5b60208301915083600182028301111561161b57600080fd5b9250929050565b600082601f83011261163357600080fd5b813561164661164182611e84565b611e57565b9150808252602083016020830185838301111561166257600080fd5b61166d83828461202d565b50505092915050565b600081359050611685816120c5565b92915050565b60008135905061169a816120dc565b92915050565b6000602082840312156116b257600080fd5b60006116c084828501611584565b91505092915050565b6000602082840312156116db57600080fd5b60006116e984828501611599565b91505092915050565b60006020828403121561170457600080fd5b6000611712848285016115ae565b91505092915050565b6000806040838503121561172e57600080fd5b600061173c85828601611584565b925050602083013567ffffffffffffffff81111561175957600080fd5b61176585828601611622565b9150509250929050565b60008060008060006080868803121561178757600080fd5b600061179588828901611584565b95505060206117a68882890161168b565b94505060406117b78882890161168b565b935050606086013567ffffffffffffffff8111156117d457600080fd5b6117e0888289016115d8565b92509250509295509295909350565b60006020828403121561180157600080fd5b600061180f848285016115c3565b91505092915050565b6000806040838503121561182b57600080fd5b600083013567ffffffffffffffff81111561184557600080fd5b61185185828601611622565b925050602083013567ffffffffffffffff81111561186e57600080fd5b61187a85828601611622565b9150509250929050565b60006020828403121561189657600080fd5b60006118a484828501611676565b91505092915050565b6118b681611f8b565b82525050565b6118c581611ef3565b82525050565b6118d481611f17565b82525050565b6118e381611f23565b82525050565b60006118f58385611ec6565b935061190283858461202d565b61190b8361206f565b840190509392505050565b600061192182611eb0565b61192b8185611ec6565b935061193b81856020860161203c565b6119448161206f565b840191505092915050565b600061195a82611eb0565b6119648185611ed7565b935061197481856020860161203c565b80840191505092915050565b61198981611f9d565b82525050565b61199881611fc1565b82525050565b6119a781611fe5565b82525050565b60006119b882611ebb565b6119c28185611ee2565b93506119d281856020860161203c565b6119db8161206f565b840191505092915050565b60006119f3601483611ee2565b91507f64732d617574682d756e617574686f72697a65640000000000000000000000006000830152602082019050919050565b6000611a33601b83611ee2565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611a73601283611ee2565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000611ab3602083611ee2565b91507f64732d70726f78792d7461726765742d616464726573732d72657175697265646000830152602082019050919050565b6000611af3600083611ed7565b9150600082019050919050565b6000611b0d601883611ee2565b91507f62797465732d726561642d6f75742d6f662d626f756e647300000000000000006000830152602082019050919050565b6000611b4d601f83611ee2565b91507f64732d70726f78792d63616368652d616464726573732d7265717569726564006000830152602082019050919050565b611b8981611f81565b82525050565b6000611b9b828861194f565b9150611ba7828761194f565b9150611bb3828661194f565b9150611bbf828561194f565b9150611bcb828461194f565b91508190509695505050505050565b6000611be582611ae6565b9150819050919050565b6000602082019050611c0460008301846118bc565b92915050565b6000604082019050611c1f60008301856118ad565b611c2c6020830184611b80565b9392505050565b6000606082019050611c4860008301866118bc565b611c5560208301856118bc565b611c6260408301846118da565b949350505050565b6000604082019050611c7f60008301856118bc565b8181036020830152611c918184611916565b90509392505050565b6000602082019050611caf60008301846118cb565b92915050565b60006020820190508181036000830152611ccf8184611916565b905092915050565b6000602082019050611cec6000830184611980565b92915050565b6000602082019050611d07600083018461198f565b92915050565b6000602082019050611d22600083018461199e565b92915050565b60006020820190508181036000830152611d4281846119ad565b905092915050565b60006020820190508181036000830152611d63816119e6565b9050919050565b60006020820190508181036000830152611d8381611a26565b9050919050565b60006020820190508181036000830152611da381611a66565b9050919050565b60006020820190508181036000830152611dc381611aa6565b9050919050565b60006020820190508181036000830152611de381611b00565b9050919050565b60006020820190508181036000830152611e0381611b40565b9050919050565b6000602082019050611e1f6000830184611b80565b92915050565b6000604082019050611e3a6000830186611b80565b8181036020830152611e4d8184866118e9565b9050949350505050565b6000604051905081810181811067ffffffffffffffff82111715611e7a57600080fd5b8060405250919050565b600067ffffffffffffffff821115611e9b57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611efe82611f61565b9050919050565b6000611f1082611f61565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000611f5a82611ef3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f9682612009565b9050919050565b6000611fa882611faf565b9050919050565b6000611fba82611f61565b9050919050565b6000611fcc82611fd3565b9050919050565b6000611fde82611f61565b9050919050565b6000611ff082611ff7565b9050919050565b600061200282611f61565b9050919050565b60006120148261201b565b9050919050565b600061202682611f61565b9050919050565b82818337600083830152505050565b60005b8381101561205a57808201518184015260208101905061203f565b83811115612069576000848401525b50505050565b6000601f19601f8301169050919050565b61208981611ef3565b811461209457600080fd5b50565b6120a081611f05565b81146120ab57600080fd5b50565b6120b781611f17565b81146120c257600080fd5b50565b6120ce81611f4f565b81146120d957600080fd5b50565b6120e581611f81565b81146120f057600080fd5b5056fea365627a7a72315820a7e949e4f7bad72e45825d8ae15370f38f5f0a3f0755fc55d0f5833c02f1aa736c6578706572696d656e74616cf564736f6c63430005100040a265627a7a723158209e84e9dd3f6235e0625e94e4ffdac73a8ed158770886313cb62353a9ba1b6ca964736f6c63430005100032", - "sourceMap": "138:2544:30:-;;;387:111;8:9:-1;5:2;;;30:1;27;20:12;5:2;387:111:30;426:18;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;426:18:30;418:5;;:26;;;;;;;;;;;;;;;;;;471:20;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;471:20:30;454:14;;:37;;;;;;;;;;;;;;;;;;138:2544;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "138:2544:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;138:2544:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;313:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1784:896;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1784:896:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1784:896:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1784:896:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1784:896:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1784:896:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;577:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;266:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;266:40:30;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1530:248;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1530:248:30;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1530:248:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1530:248:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1530:248:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1530:248:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;778:641;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:641:30;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;344:36;;;;;;;;;;;;;:::o;313:25::-;;;;;;;;;;;;;:::o;1784:896::-;1939:15;2062:1;2036:28;;:7;:14;2044:5;2036:14;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;2032:98;;2103:7;:14;2111:5;2103:14;;;;;;;;;;;;;;;;;;;;;;;;;2080:39;;;;2032:98;2140:21;2193:5;;;;;;;;;;;2172:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2172:28:30;2140:61;;2236:5;2216:58;;2224:10;2216:58;;;2251:5;2267;;;;;;;;;;;2216:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2285:13;2301:14;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2301:25:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2301:25:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2301:25:30;;;;;;;;;;;;;;;;2285:41;;2336:5;:14;;;2351:5;2336:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2336:21:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2336:21:30;;;;2439:5;2430:23;;;2467:20;2501:19;2430:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2430:100:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2430:100:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2430:100:30;;;;;;39:16:-1;36:1;17:17;2:54;2430:100:30;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2430:100:30;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;2430:100:30;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2430:100:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2550:5;2541:28;;;2570:5;2541:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2541:35:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2541:35:30;;;;2595:5;2586:24;;;2611:5;2586:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2586:31:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2586:31:30;;;;2645:5;2628:7;:14;2636:5;2628:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2668:5;2661:12;;;;1784:896;;;;;;:::o;577:98::-;610:21;651:17;657:10;651:5;:17::i;:::-;643:25;;577:98;:::o;266:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;1530:248::-;1662:15;1696:75;1717:10;1729:20;1751:19;1696:20;:75::i;:::-;1689:82;;1530:248;;;;:::o;778:641::-;824:15;947:1;921:28;;:7;:14;929:5;921:14;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;917:98;;988:7;:14;996:5;988:14;;;;;;;;;;;;;;;;;;;;;;;;;965:39;;;;917:98;1025:21;1078:5;;;;;;;;;;;1057:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1057:28:30;1025:61;;1121:5;1101:58;;1109:10;1101:58;;;1136:5;1152;;;;;;;;;;;1101:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:13;1186:14;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1186:25:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1186:25:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1186:25:30;;;;;;;;;;;;;;;;1170:41;;1221:5;:14;;;1236:5;1221:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1221:21:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1221:21:30;;;;1289:5;1280:28;;;1309:5;1280:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1280:35:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1280:35:30;;;;1334:5;1325:24;;;1350:5;1325:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1325:31:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1325:31:30;;;;1384:5;1367:7;:14;1375:5;1367:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;1407:5;1400:12;;;;778:641;;;;:::o;138:2544::-;;;;;;;;:::o", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cache\",\"type\":\"address\"}],\"name\":\"Created\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"proxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dedgeCompoundManager\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"enterMarketCalldata\",\"type\":\"bytes\"}],\"name\":\"buildAndEnterMarkets\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeCompoundManager\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"enterMarketCalldata\",\"type\":\"bytes\"}],\"name\":\"buildAndEnterMarkets\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dsGuardFactory\",\"outputs\":[{\"internalType\":\"contract DSGuardFactory\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"proxies\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol\":\"DACProxyFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol\":{\"keccak256\":\"0x4fc914255b0bf8c2d9b45c76a864a3c02f1081fe07889126d14f103c37755da1\",\"urls\":[\"bzz-raw://ab17e6aea566c49b8a78f4ef97e0f955b7d0d4bcb1f2c940c4550f64929d889d\",\"dweb:/ipfs/QmUub8jb28wXQRnvLZTZmrYN58xFZTro5gZAhZHseBZMbf\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5060405161001d906100a8565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b0392909216919091179055604051610066906100b5565b604051809103906000f080158015610082573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b03929092169190911790556100c2565b6102658061264083390190565b610aca806128a583390190565b61256f806100d16000396000f3fe60806040523480156200001157600080fd5b5060043610620000885760003560e01c80638e1a55fc11620000635780638e1a55fc1462000182578063c4552791146200018c578063ddd2d6ac14620001b5578063f3701da214620002715762000088565b80632e5c9848146200008d57806360c7d29514620000b35780636456568b14620000bd575b600080fd5b620000976200029a565b604080516001600160a01b039092168252519081900360200190f35b62000097620002a9565b6200009760048036036060811015620000d557600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156200010a57600080fd5b8201836020820111156200011d57600080fd5b803590602001918460018302840111640100000000831117156200014057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620002b8945050505050565b6200009762000740565b6200009760048036036020811015620001a457600080fd5b50356001600160a01b031662000752565b6200009760048036036040811015620001cd57600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115620001f957600080fd5b8201836020820111156200020c57600080fd5b803590602001918460018302840111640100000000831117156200022f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506200076d945050505050565b62000097600480360360208110156200028957600080fd5b50356001600160a01b03166200077c565b6002546001600160a01b031681565b6001546001600160a01b031681565b6001600160a01b0383811660009081526020819052604081205490911615620002fd57506001600160a01b038084166000908152602081905260409020541662000739565b6001546040516000916001600160a01b0316906200031b9062000a56565b6001600160a01b03909116815260405190819003602001906000f08015801562000349573d6000803e3d6000fd5b50600154604080516001600160a01b038085168252928316602082015281519394509188169233927f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b92908290030190a3600254604080516365688cc960e01b815290516000926001600160a01b0316916365688cc991600480830192602092919082900301818787803b158015620003e157600080fd5b505af1158015620003f6573d6000803e3d6000fd5b505050506040513d60208110156200040d57600080fd5b5051604080516313af403560e01b81526001600160a01b0385811660048301529151929350908316916313af40359160248082019260009290919082900301818387803b1580156200045e57600080fd5b505af115801562000473573d6000803e3d6000fd5b50505050816001600160a01b0316631cff79cd86866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620004ee578181015183820152602001620004d4565b50505050905090810190601f1680156200051c5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156200053d57600080fd5b505af115801562000552573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200057c57600080fd5b81019080805160405193929190846401000000008211156200059d57600080fd5b908301906020820185811115620005b357600080fd5b8251640100000000811182820188101715620005ce57600080fd5b82525081516020918201929091019080838360005b83811015620005fd578181015183820152602001620005e3565b50505050905090810190601f1680156200062b5780820380516001836020036101000a031916815260200191505b506040818152637a9e5e4b60e01b82526001600160a01b03878116600484015290519088169550637a9e5e4b94506024808301945060009350909182900301818387803b1580156200067c57600080fd5b505af115801562000691573d6000803e3d6000fd5b50505050816001600160a01b03166313af4035876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015620006ee57600080fd5b505af115801562000703573d6000803e3d6000fd5b505050506001600160a01b03868116600090815260208190526040902080546001600160a01b0319169184169190911790555090505b9392505050565b60006200074d336200077c565b905090565b6000602081905290815260409020546001600160a01b031681565b600062000739338484620002b8565b6001600160a01b0381811660009081526020819052604081205490911615620007c157506001600160a01b038082166000908152602081905260409020541662000a51565b6001546040516000916001600160a01b031690620007df9062000a56565b6001600160a01b03909116815260405190819003602001906000f0801580156200080d573d6000803e3d6000fd5b50600154604080516001600160a01b038085168252928316602082015281519394509186169233927f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b92908290030190a3600254604080516365688cc960e01b815290516000926001600160a01b0316916365688cc991600480830192602092919082900301818787803b158015620008a557600080fd5b505af1158015620008ba573d6000803e3d6000fd5b505050506040513d6020811015620008d157600080fd5b5051604080516313af403560e01b81526001600160a01b0385811660048301529151929350908316916313af40359160248082019260009290919082900301818387803b1580156200092257600080fd5b505af115801562000937573d6000803e3d6000fd5b50505050816001600160a01b0316637a9e5e4b826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156200099457600080fd5b505af1158015620009a9573d6000803e3d6000fd5b50505050816001600160a01b03166313af4035856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801562000a0657600080fd5b505af115801562000a1b573d6000803e3d6000fd5b505050506001600160a01b03848116600090815260208190526040902080546001600160a01b0319169184169190911790555090505b919050565b611ad68062000a658339019056fe6080604052600380546001600160a01b0319167324a42fd28c976a61df5d00d0599c34c4f90748c81790553480156200003757600080fd5b5060405162001ad638038062001ad68339810160408190526200005a9162000320565b600180546001600160a01b0319163390811782556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a2620000ab816001600160e01b03620000ca16565b50620000c29050816001600160e01b03620000ca16565b505062000543565b600062000104337fffffffff000000000000000000000000000000000000000000000000000000008335166001600160e01b036200020316565b62000146576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d9062000467565b60405180910390fd5b60405160043590602435903490829084903390600080357fffffffff0000000000000000000000000000000000000000000000000000000016916200018f91879136906200048b565b60405180910390a46001600160a01b038516620001da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d9062000479565b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b60006001600160a01b038316301415620002205750600162000300565b6001546001600160a01b0384811691161415620002405750600162000300565b6000546001600160a01b03166200025a5750600062000300565b6000546040517fb70096130000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b700961390620002a99086903090879060040162000439565b60206040518083038186803b158015620002c257600080fd5b505afa158015620002d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002fd919081019062000349565b90505b92915050565b805162000300816200051e565b8051620003008162000538565b6000602082840312156200033357600080fd5b600062000341848462000306565b949350505050565b6000602082840312156200035c57600080fd5b600062000341848462000313565b6200037581620004c2565b82525050565b6200037581620004d4565b6000620003948385620004b9565b9350620003a383858462000508565b620003ae8362000514565b9093019392505050565b6000620003c7601483620004b9565b7f64732d617574682d756e617574686f72697a6564000000000000000000000000815260200192915050565b600062000402601f83620004b9565b7f64732d70726f78792d63616368652d616464726573732d726571756972656400815260200192915050565b620003758162000505565b606081016200044982866200036a565b6200045860208301856200036a565b6200034160408301846200037b565b602080825281016200030081620003b8565b602080825281016200030081620003f3565b604081016200049b82866200042e565b8181036020830152620004b081848662000386565b95945050505050565b90815260200190565b60006200030082620004f9565b151590565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b6001600160a01b031690565b90565b82818337506000910152565b601f01601f191690565b6200052981620004c2565b81146200053557600080fd5b50565b6200052981620004cf565b61158380620005536000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b1461013f578063948f507614610161578063bf7e214f1461018e578063c72c4d10146101a3578063ee872558146101b857610091565b806313af4035146100935780631cff79cd146100b35780631f6a1eb9146100dc57806360c7d295146100fd5780637a9e5e4b1461011f575b005b34801561009f57600080fd5b506100916100ae366004610f07565b6101d8565b6100c66100c1366004610f4b565b610263565b6040516100d39190611372565b60405180910390f35b6100ef6100ea366004611039565b610347565b6040516100d3929190611344565b34801561010957600080fd5b50610112610475565b6040516100d39190611383565b34801561012b57600080fd5b5061009161013a36600461106f565b610484565b34801561014b57600080fd5b50610154610502565b6040516100d391906112f3565b34801561016d57600080fd5b5061018161017c366004610f07565b610511565b6040516100d39190611364565b34801561019a57600080fd5b506101126105cb565b3480156101af57600080fd5b506101126105da565b3480156101c457600080fd5b506100916101d3366004610f9d565b6105e9565b6101ee336000356001600160e01b031916610a21565b6102135760405162461bcd60e51b815260040161020a90611391565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b606061027b336000356001600160e01b031916610a21565b6102975760405162461bcd60e51b815260040161020a90611391565b60405160043590602435903490829084903390600080356001600160e01b031916916102c691879136906113ff565b60405180910390a46001600160a01b0386166102f45760405162461bcd60e51b815260040161020a906113c1565b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146103345761033b565b8160208801fd5b50505050505092915050565b6002546040516322fd145760e21b81526000916060916001600160a01b0390911690638bf4515c9061037d908790600401611372565b60206040518083038186803b15801561039557600080fd5b505afa1580156103a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103cd9190810190610f2d565b91506001600160a01b03821661046257600254604051633f6861d960e11b81526001600160a01b0390911690637ed0c3b29061040d908790600401611372565b602060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061045f9190810190610f2d565b91505b61046c8284610263565b90509250929050565b6002546001600160a01b031681565b61049a336000356001600160e01b031916610a21565b6104b65760405162461bcd60e51b815260040161020a90611391565b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000610529336000356001600160e01b031916610a21565b6105455760405162461bcd60e51b815260040161020a90611391565b60405160043590602435903490829084903390600080356001600160e01b0319169161057491879136906113ff565b60405180910390a46001600160a01b0385166105a25760405162461bcd60e51b815260040161020a906113e1565b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b6000546001600160a01b031681565b6003546001600160a01b031681565b6105ff336000356001600160e01b031916610a21565b61061b5760405162461bcd60e51b815260040161020a90611391565b600061062e84600263ffffffff610aff16565b9050600061067484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600c9250610b41915050565b905060606106bd85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506020925060049150610b779050565b9050606061070386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060849250610c0c915050565b90506060828960405160200161071991906113f1565b6040516020818303038152906040528960405160200161073991906113f1565b6040516020818303038152906040528760405160200161075991906113f1565b60408051601f198184030181529082905261077b9493929187906020016112a1565b60405160208183030381529060405290506107968482610263565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038b1614156108b15773773ccbfb422850617a5680d40b1260422d072f416107e286600263ffffffff610aff16565b6040516107ee906112e8565b60006040518083038185875af1925050503d806000811461082b576040519150601f19603f3d011682016040523d82523d6000602084013e610830565b606091505b5073abccb8f0a3c206bb0468c52ccc20f3b81077417b915061085b905086600263ffffffff610aff16565b604051610867906112e8565b60006040518083038185875af1925050503d80600081146108a4576040519150601f19603f3d011682016040523d82523d6000602084013e6108a9565b606091505b5050506109fc565b6001600160a01b038a1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f416108e688600263ffffffff610aff16565b6040518363ffffffff1660e01b8152600401610903929190611301565b602060405180830381600087803b15801561091d57600080fd5b505af1158015610931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610955919081019061101b565b506001600160a01b038a1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b61098b88600263ffffffff610aff16565b6040518363ffffffff1660e01b81526004016109a8929190611301565b602060405180830381600087803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109fa919081019061101b565b505b610a158a610a108b8b63ffffffff610c3c16565b610c61565b50505050505050505050565b60006001600160a01b038316301415610a3c57506001610af9565b6001546001600160a01b0384811691161415610a5a57506001610af9565b6000546001600160a01b0316610a7257506000610af9565b60005460405163b700961360e01b81526001600160a01b039091169063b700961390610aa69086903090879060040161131c565b60206040518083038186803b158015610abe57600080fd5b505afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610af6919081019061101b565b90505b92915050565b6000610af683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cf0565b60008160140183511015610b675760405162461bcd60e51b815260040161020a906113b1565b500160200151600160601b900490565b606081830184511015610b9c5760405162461bcd60e51b815260040161020a906113d1565b606082158015610bb757604051915060208201604052610c01565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610bf0578051835260209283019201610bd8565b5050858452601f01601f1916604052505b5090505b9392505050565b606082518210610c2e5760405162461bcd60e51b815260040161020a906113d1565b610af6838384865103610b77565b600082820183811015610af65760405162461bcd60e51b815260040161020a906113a1565b6003546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b158015610ca657600080fd5b505afa158015610cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cde9190810190610f2d565b9050610ceb818484610d27565b505050565b60008183610d115760405162461bcd60e51b815260040161020a9190611372565b506000838581610d1d57fe5b0495945050505050565b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610dad57826001600160a01b031681604051610d63906112e8565b60006040518083038185875af1925050503d8060008114610da0576040519150601f19603f3d011682016040523d82523d6000602084013e610da5565b606091505b505050610ceb565b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb90610ddb9086908590600401611301565b602060405180830381600087803b158015610df557600080fd5b505af1158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2d919081019061101b565b50505050565b8035610af98161150e565b8051610af98161150e565b8051610af981611525565b60008083601f840112610e6657600080fd5b50813567ffffffffffffffff811115610e7e57600080fd5b602083019150836001820283011115610e9657600080fd5b9250929050565b600082601f830112610eae57600080fd5b8135610ec1610ebc82611450565b611429565b91508082526020830160208301858383011115610edd57600080fd5b610ee88382846114cc565b50505092915050565b8035610af98161152e565b8035610af981611537565b600060208284031215610f1957600080fd5b6000610f258484610e33565b949350505050565b600060208284031215610f3f57600080fd5b6000610f258484610e3e565b60008060408385031215610f5e57600080fd5b6000610f6a8585610e33565b925050602083013567ffffffffffffffff811115610f8757600080fd5b610f9385828601610e9d565b9150509250929050565b600080600080600060808688031215610fb557600080fd5b6000610fc18888610e33565b9550506020610fd288828901610efc565b9450506040610fe388828901610efc565b935050606086013567ffffffffffffffff81111561100057600080fd5b61100c88828901610e54565b92509250509295509295909350565b60006020828403121561102d57600080fd5b6000610f258484610e49565b6000806040838503121561104c57600080fd5b823567ffffffffffffffff81111561106357600080fd5b610f6a85828601610e9d565b60006020828403121561108157600080fd5b6000610f258484610ef1565b611096816114c1565b82525050565b6110968161148a565b61109681611495565b6110968161149a565b60006110c3838561147c565b93506110d08385846114cc565b6110d983611504565b9093019392505050565b60006110ee82611478565b6110f8818561147c565b93506111088185602086016114d8565b6110d981611504565b600061111c82611478565b6111268185611485565b93506111368185602086016114d8565b9290920192915050565b611096816114a7565b600061115660148361147c565b73191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b815260200192915050565b6000611186601b8361147c565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006111bf60128361147c565b7152656164206f7574206f6620626f756e647360701b815260200192915050565b60006111ed60208361147c565b7f64732d70726f78792d7461726765742d616464726573732d7265717569726564815260200192915050565b6000610af9600083611485565b600061123360188361147c565b7f62797465732d726561642d6f75742d6f662d626f756e64730000000000000000815260200192915050565b600061126c601f8361147c565b7f64732d70726f78792d63616368652d616464726573732d726571756972656400815260200192915050565b611096816114be565b60006112ad8288611111565b91506112b98287611111565b91506112c58286611111565b91506112d18285611111565b91506112dd8284611111565b979650505050505050565b6000610af982611219565b60208101610af9828461109c565b6040810161130f828561108d565b610c056020830184611298565b6060810161132a828661109c565b611337602083018561109c565b610f2560408301846110ae565b60408101611352828561109c565b8181036020830152610f2581846110e3565b60208101610af982846110a5565b60208082528101610af681846110e3565b60208101610af98284611140565b60208082528101610af981611149565b60208082528101610af981611179565b60208082528101610af9816111b2565b60208082528101610af9816111e0565b60208082528101610af981611226565b60208082528101610af98161125f565b60208101610af98284611298565b6040810161140d8286611298565b81810360208301526114208184866110b7565b95945050505050565b60405181810167ffffffffffffffff8111828210171561144857600080fd5b604052919050565b600067ffffffffffffffff82111561146757600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b919050565b6000610af9826114b2565b151590565b6001600160e01b03191690565b6000610af98261148a565b6001600160a01b031690565b90565b6000610af9826114a7565b82818337506000910152565b60005b838110156114f35781810151838201526020016114db565b83811115610e2d5750506000910152565b601f01601f191690565b6115178161148a565b811461152257600080fd5b50565b61151781611495565b611517816114a7565b611517816114be56fea365627a7a72315820ca2aaf531ed3d692639fd8240fdf5db1c3918dc58f88e738d42af9ed907877fd6c6578706572696d656e74616cf564736f6c63430005100040a265627a7a7231582043f1a50ec1e4e2ef45a34295bf027a6c3d74f923722dfa14858f73dcf0dfd23164736f6c63430005100032608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c146100fd575b600080fd5b6100e16004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101a3945050505050565b604080516001600160a01b039092168252519081900360200190f35b6100e16004803603602081101561011357600080fd5b81019060208101813564010000000081111561012e57600080fd5b82018360208201111561014057600080fd5b8035906020019184600183028401116401000000008311171561016257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101ee945050505050565b60008151602083016000f09050803b156001811461003657508151602092830120600090815291829052604090912080546001600160a01b0319166001600160a01b03831617905590565b805160209182012060009081529081905260409020546001600160a01b03169056fea265627a7a72315820a463b0981db8e6a179d563cefded0ff7df019aaf804d14d24bb7b25be7d3dd6f64736f6c63430005100032608060405234801561001057600080fd5b50610aaa806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063489c12021461003b57806365688cc914610075575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b0316610099565b604080519115158252519081900360200190f35b61007d6100ae565b604080516001600160a01b039092168252519081900360200190f35b60006020819052908152604090205460ff1681565b60006040516100bc90610162565b604051809103906000f0801580156100d8573d6000803e3d6000fd5b50604080516313af403560e01b815233600482015290519192506001600160a01b038316916313af40359160248082019260009290919082900301818387803b15801561012457600080fd5b505af1158015610138573d6000803e3d6000fd5b5050506001600160a01b0382166000908152602081905260409020805460ff191660011790555090565b610906806101708339019056fe60806040819052600180546001600160a01b03191633908117909155907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a26108b5806100516000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610174578063b70096131461018e578063bf7e214f146101e3578063cbeea68c146101eb578063f0217ce5146102215761009e565b806313af4035146100a35780632bc3217d146100cb57806379d88d87146101015780637a9e5e4b1461012a5780638da5cb5b14610150575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661024a565b005b6100c9600480360360608110156100e157600080fd5b506001600160a01b038135811691602081013590911690604001356102f8565b6100c96004803603606081101561011757600080fd5b5080359060208101359060400135610322565b6100c96004803603602081101561014057600080fd5b50356001600160a01b03166103d9565b610158610483565b604080516001600160a01b039092168252519081900360200190f35b61017c610492565b60408051918252519081900360200190f35b6101cf600480360360608110156101a457600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160e01b031916610498565b604080519115158252519081900360200190f35b6101586106ad565b6100c96004803603606081101561020157600080fd5b506001600160a01b038135811691602081013590911690604001356106bc565b6100c96004803603606081101561023757600080fd5b50803590602081013590604001356106dd565b610260336000356001600160e01b031916610797565b6102a8576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b61031d8360601b6001600160601b0319168360601b6001600160601b03191683610322565b505050565b610338336000356001600160e01b031916610797565b610380576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19169055518291849186917f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282991a4505050565b6103ef336000356001600160e01b031916610797565b610437576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b60001981565b6bffffffffffffffffffffffff19606084811b821660008181526002602090815260408083209488901b9095168083529381528482206001600160e01b03198716835290529283205490919060ff1680610515575060008281526002602090815260408083208484528252808320600019845290915290205460ff165b8061054d57506000828152600260209081526040808320600019845282528083206001600160e01b03198816845290915290205460ff165b80610578575060008281526002602090815260408083206000198452825280832090915290205460ff165b806105c5575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb602090815260408083206001600160e01b03198816845290915290205460ff165b8061060a575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb60209081526040808320600019845290915290205460ff165b8061064d57506001600160e01b0319841660009081527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d97602052604090205460ff165b806106a357506000196000527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d976020527ff423d1317b37667cd26005728bffa7c8b0499e133951fcf8e814d4fc5f4c98f65460ff165b9695505050505050565b6000546001600160a01b031681565b61031d8360601b6001600160601b0319168360601b6001600160601b031916835b6106f3336000356001600160e01b031916610797565b61073b576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19166001179055518291849186917f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677191a4505050565b60006001600160a01b0383163014156107b25750600161087a565b6001546001600160a01b03848116911614156107d05750600161087a565b6000546001600160a01b03166107e85750600061087a565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561084b57600080fd5b505afa15801561085f573d6000803e3d6000fd5b505050506040513d602081101561087557600080fd5b505190505b9291505056fea265627a7a7231582002f13cb32032449838808dd8f202e7345ece3907f6e1ea30707f04c2b7b30b2764736f6c63430005100032a265627a7a72315820d678cbdfcf20396599f1aaece9d90f67e09d88474e21bc810c1c6f4bd1f40fc964736f6c63430005100032", + "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000885760003560e01c80638e1a55fc11620000635780638e1a55fc1462000182578063c4552791146200018c578063ddd2d6ac14620001b5578063f3701da214620002715762000088565b80632e5c9848146200008d57806360c7d29514620000b35780636456568b14620000bd575b600080fd5b620000976200029a565b604080516001600160a01b039092168252519081900360200190f35b62000097620002a9565b6200009760048036036060811015620000d557600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156200010a57600080fd5b8201836020820111156200011d57600080fd5b803590602001918460018302840111640100000000831117156200014057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620002b8945050505050565b6200009762000740565b6200009760048036036020811015620001a457600080fd5b50356001600160a01b031662000752565b6200009760048036036040811015620001cd57600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115620001f957600080fd5b8201836020820111156200020c57600080fd5b803590602001918460018302840111640100000000831117156200022f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506200076d945050505050565b62000097600480360360208110156200028957600080fd5b50356001600160a01b03166200077c565b6002546001600160a01b031681565b6001546001600160a01b031681565b6001600160a01b0383811660009081526020819052604081205490911615620002fd57506001600160a01b038084166000908152602081905260409020541662000739565b6001546040516000916001600160a01b0316906200031b9062000a56565b6001600160a01b03909116815260405190819003602001906000f08015801562000349573d6000803e3d6000fd5b50600154604080516001600160a01b038085168252928316602082015281519394509188169233927f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b92908290030190a3600254604080516365688cc960e01b815290516000926001600160a01b0316916365688cc991600480830192602092919082900301818787803b158015620003e157600080fd5b505af1158015620003f6573d6000803e3d6000fd5b505050506040513d60208110156200040d57600080fd5b5051604080516313af403560e01b81526001600160a01b0385811660048301529151929350908316916313af40359160248082019260009290919082900301818387803b1580156200045e57600080fd5b505af115801562000473573d6000803e3d6000fd5b50505050816001600160a01b0316631cff79cd86866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620004ee578181015183820152602001620004d4565b50505050905090810190601f1680156200051c5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156200053d57600080fd5b505af115801562000552573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200057c57600080fd5b81019080805160405193929190846401000000008211156200059d57600080fd5b908301906020820185811115620005b357600080fd5b8251640100000000811182820188101715620005ce57600080fd5b82525081516020918201929091019080838360005b83811015620005fd578181015183820152602001620005e3565b50505050905090810190601f1680156200062b5780820380516001836020036101000a031916815260200191505b506040818152637a9e5e4b60e01b82526001600160a01b03878116600484015290519088169550637a9e5e4b94506024808301945060009350909182900301818387803b1580156200067c57600080fd5b505af115801562000691573d6000803e3d6000fd5b50505050816001600160a01b03166313af4035876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015620006ee57600080fd5b505af115801562000703573d6000803e3d6000fd5b505050506001600160a01b03868116600090815260208190526040902080546001600160a01b0319169184169190911790555090505b9392505050565b60006200074d336200077c565b905090565b6000602081905290815260409020546001600160a01b031681565b600062000739338484620002b8565b6001600160a01b0381811660009081526020819052604081205490911615620007c157506001600160a01b038082166000908152602081905260409020541662000a51565b6001546040516000916001600160a01b031690620007df9062000a56565b6001600160a01b03909116815260405190819003602001906000f0801580156200080d573d6000803e3d6000fd5b50600154604080516001600160a01b038085168252928316602082015281519394509186169233927f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b92908290030190a3600254604080516365688cc960e01b815290516000926001600160a01b0316916365688cc991600480830192602092919082900301818787803b158015620008a557600080fd5b505af1158015620008ba573d6000803e3d6000fd5b505050506040513d6020811015620008d157600080fd5b5051604080516313af403560e01b81526001600160a01b0385811660048301529151929350908316916313af40359160248082019260009290919082900301818387803b1580156200092257600080fd5b505af115801562000937573d6000803e3d6000fd5b50505050816001600160a01b0316637a9e5e4b826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156200099457600080fd5b505af1158015620009a9573d6000803e3d6000fd5b50505050816001600160a01b03166313af4035856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801562000a0657600080fd5b505af115801562000a1b573d6000803e3d6000fd5b505050506001600160a01b03848116600090815260208190526040902080546001600160a01b0319169184169190911790555090505b919050565b611ad68062000a658339019056fe6080604052600380546001600160a01b0319167324a42fd28c976a61df5d00d0599c34c4f90748c81790553480156200003757600080fd5b5060405162001ad638038062001ad68339810160408190526200005a9162000320565b600180546001600160a01b0319163390811782556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a2620000ab816001600160e01b03620000ca16565b50620000c29050816001600160e01b03620000ca16565b505062000543565b600062000104337fffffffff000000000000000000000000000000000000000000000000000000008335166001600160e01b036200020316565b62000146576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d9062000467565b60405180910390fd5b60405160043590602435903490829084903390600080357fffffffff0000000000000000000000000000000000000000000000000000000016916200018f91879136906200048b565b60405180910390a46001600160a01b038516620001da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d9062000479565b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b60006001600160a01b038316301415620002205750600162000300565b6001546001600160a01b0384811691161415620002405750600162000300565b6000546001600160a01b03166200025a5750600062000300565b6000546040517fb70096130000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b700961390620002a99086903090879060040162000439565b60206040518083038186803b158015620002c257600080fd5b505afa158015620002d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002fd919081019062000349565b90505b92915050565b805162000300816200051e565b8051620003008162000538565b6000602082840312156200033357600080fd5b600062000341848462000306565b949350505050565b6000602082840312156200035c57600080fd5b600062000341848462000313565b6200037581620004c2565b82525050565b6200037581620004d4565b6000620003948385620004b9565b9350620003a383858462000508565b620003ae8362000514565b9093019392505050565b6000620003c7601483620004b9565b7f64732d617574682d756e617574686f72697a6564000000000000000000000000815260200192915050565b600062000402601f83620004b9565b7f64732d70726f78792d63616368652d616464726573732d726571756972656400815260200192915050565b620003758162000505565b606081016200044982866200036a565b6200045860208301856200036a565b6200034160408301846200037b565b602080825281016200030081620003b8565b602080825281016200030081620003f3565b604081016200049b82866200042e565b8181036020830152620004b081848662000386565b95945050505050565b90815260200190565b60006200030082620004f9565b151590565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b6001600160a01b031690565b90565b82818337506000910152565b601f01601f191690565b6200052981620004c2565b81146200053557600080fd5b50565b6200052981620004cf565b61158380620005536000396000f3fe6080604052600436106100915760003560e01c80638da5cb5b116100595780638da5cb5b1461013f578063948f507614610161578063bf7e214f1461018e578063c72c4d10146101a3578063ee872558146101b857610091565b806313af4035146100935780631cff79cd146100b35780631f6a1eb9146100dc57806360c7d295146100fd5780637a9e5e4b1461011f575b005b34801561009f57600080fd5b506100916100ae366004610f07565b6101d8565b6100c66100c1366004610f4b565b610263565b6040516100d39190611372565b60405180910390f35b6100ef6100ea366004611039565b610347565b6040516100d3929190611344565b34801561010957600080fd5b50610112610475565b6040516100d39190611383565b34801561012b57600080fd5b5061009161013a36600461106f565b610484565b34801561014b57600080fd5b50610154610502565b6040516100d391906112f3565b34801561016d57600080fd5b5061018161017c366004610f07565b610511565b6040516100d39190611364565b34801561019a57600080fd5b506101126105cb565b3480156101af57600080fd5b506101126105da565b3480156101c457600080fd5b506100916101d3366004610f9d565b6105e9565b6101ee336000356001600160e01b031916610a21565b6102135760405162461bcd60e51b815260040161020a90611391565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b606061027b336000356001600160e01b031916610a21565b6102975760405162461bcd60e51b815260040161020a90611391565b60405160043590602435903490829084903390600080356001600160e01b031916916102c691879136906113ff565b60405180910390a46001600160a01b0386166102f45760405162461bcd60e51b815260040161020a906113c1565b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146103345761033b565b8160208801fd5b50505050505092915050565b6002546040516322fd145760e21b81526000916060916001600160a01b0390911690638bf4515c9061037d908790600401611372565b60206040518083038186803b15801561039557600080fd5b505afa1580156103a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103cd9190810190610f2d565b91506001600160a01b03821661046257600254604051633f6861d960e11b81526001600160a01b0390911690637ed0c3b29061040d908790600401611372565b602060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061045f9190810190610f2d565b91505b61046c8284610263565b90509250929050565b6002546001600160a01b031681565b61049a336000356001600160e01b031916610a21565b6104b65760405162461bcd60e51b815260040161020a90611391565b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000610529336000356001600160e01b031916610a21565b6105455760405162461bcd60e51b815260040161020a90611391565b60405160043590602435903490829084903390600080356001600160e01b0319169161057491879136906113ff565b60405180910390a46001600160a01b0385166105a25760405162461bcd60e51b815260040161020a906113e1565b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b6000546001600160a01b031681565b6003546001600160a01b031681565b6105ff336000356001600160e01b031916610a21565b61061b5760405162461bcd60e51b815260040161020a90611391565b600061062e84600263ffffffff610aff16565b9050600061067484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600c9250610b41915050565b905060606106bd85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506020925060049150610b779050565b9050606061070386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060849250610c0c915050565b90506060828960405160200161071991906113f1565b6040516020818303038152906040528960405160200161073991906113f1565b6040516020818303038152906040528760405160200161075991906113f1565b60408051601f198184030181529082905261077b9493929187906020016112a1565b60405160208183030381529060405290506107968482610263565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038b1614156108b15773773ccbfb422850617a5680d40b1260422d072f416107e286600263ffffffff610aff16565b6040516107ee906112e8565b60006040518083038185875af1925050503d806000811461082b576040519150601f19603f3d011682016040523d82523d6000602084013e610830565b606091505b5073abccb8f0a3c206bb0468c52ccc20f3b81077417b915061085b905086600263ffffffff610aff16565b604051610867906112e8565b60006040518083038185875af1925050503d80600081146108a4576040519150601f19603f3d011682016040523d82523d6000602084013e6108a9565b606091505b5050506109fc565b6001600160a01b038a1663a9059cbb73773ccbfb422850617a5680d40b1260422d072f416108e688600263ffffffff610aff16565b6040518363ffffffff1660e01b8152600401610903929190611301565b602060405180830381600087803b15801561091d57600080fd5b505af1158015610931573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610955919081019061101b565b506001600160a01b038a1663a9059cbb73abccb8f0a3c206bb0468c52ccc20f3b81077417b61098b88600263ffffffff610aff16565b6040518363ffffffff1660e01b81526004016109a8929190611301565b602060405180830381600087803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109fa919081019061101b565b505b610a158a610a108b8b63ffffffff610c3c16565b610c61565b50505050505050505050565b60006001600160a01b038316301415610a3c57506001610af9565b6001546001600160a01b0384811691161415610a5a57506001610af9565b6000546001600160a01b0316610a7257506000610af9565b60005460405163b700961360e01b81526001600160a01b039091169063b700961390610aa69086903090879060040161131c565b60206040518083038186803b158015610abe57600080fd5b505afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610af6919081019061101b565b90505b92915050565b6000610af683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cf0565b60008160140183511015610b675760405162461bcd60e51b815260040161020a906113b1565b500160200151600160601b900490565b606081830184511015610b9c5760405162461bcd60e51b815260040161020a906113d1565b606082158015610bb757604051915060208201604052610c01565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610bf0578051835260209283019201610bd8565b5050858452601f01601f1916604052505b5090505b9392505050565b606082518210610c2e5760405162461bcd60e51b815260040161020a906113d1565b610af6838384865103610b77565b600082820183811015610af65760405162461bcd60e51b815260040161020a906113a1565b6003546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b158015610ca657600080fd5b505afa158015610cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cde9190810190610f2d565b9050610ceb818484610d27565b505050565b60008183610d115760405162461bcd60e51b815260040161020a9190611372565b506000838581610d1d57fe5b0495945050505050565b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610dad57826001600160a01b031681604051610d63906112e8565b60006040518083038185875af1925050503d8060008114610da0576040519150601f19603f3d011682016040523d82523d6000602084013e610da5565b606091505b505050610ceb565b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb90610ddb9086908590600401611301565b602060405180830381600087803b158015610df557600080fd5b505af1158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e2d919081019061101b565b50505050565b8035610af98161150e565b8051610af98161150e565b8051610af981611525565b60008083601f840112610e6657600080fd5b50813567ffffffffffffffff811115610e7e57600080fd5b602083019150836001820283011115610e9657600080fd5b9250929050565b600082601f830112610eae57600080fd5b8135610ec1610ebc82611450565b611429565b91508082526020830160208301858383011115610edd57600080fd5b610ee88382846114cc565b50505092915050565b8035610af98161152e565b8035610af981611537565b600060208284031215610f1957600080fd5b6000610f258484610e33565b949350505050565b600060208284031215610f3f57600080fd5b6000610f258484610e3e565b60008060408385031215610f5e57600080fd5b6000610f6a8585610e33565b925050602083013567ffffffffffffffff811115610f8757600080fd5b610f9385828601610e9d565b9150509250929050565b600080600080600060808688031215610fb557600080fd5b6000610fc18888610e33565b9550506020610fd288828901610efc565b9450506040610fe388828901610efc565b935050606086013567ffffffffffffffff81111561100057600080fd5b61100c88828901610e54565b92509250509295509295909350565b60006020828403121561102d57600080fd5b6000610f258484610e49565b6000806040838503121561104c57600080fd5b823567ffffffffffffffff81111561106357600080fd5b610f6a85828601610e9d565b60006020828403121561108157600080fd5b6000610f258484610ef1565b611096816114c1565b82525050565b6110968161148a565b61109681611495565b6110968161149a565b60006110c3838561147c565b93506110d08385846114cc565b6110d983611504565b9093019392505050565b60006110ee82611478565b6110f8818561147c565b93506111088185602086016114d8565b6110d981611504565b600061111c82611478565b6111268185611485565b93506111368185602086016114d8565b9290920192915050565b611096816114a7565b600061115660148361147c565b73191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b815260200192915050565b6000611186601b8361147c565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006111bf60128361147c565b7152656164206f7574206f6620626f756e647360701b815260200192915050565b60006111ed60208361147c565b7f64732d70726f78792d7461726765742d616464726573732d7265717569726564815260200192915050565b6000610af9600083611485565b600061123360188361147c565b7f62797465732d726561642d6f75742d6f662d626f756e64730000000000000000815260200192915050565b600061126c601f8361147c565b7f64732d70726f78792d63616368652d616464726573732d726571756972656400815260200192915050565b611096816114be565b60006112ad8288611111565b91506112b98287611111565b91506112c58286611111565b91506112d18285611111565b91506112dd8284611111565b979650505050505050565b6000610af982611219565b60208101610af9828461109c565b6040810161130f828561108d565b610c056020830184611298565b6060810161132a828661109c565b611337602083018561109c565b610f2560408301846110ae565b60408101611352828561109c565b8181036020830152610f2581846110e3565b60208101610af982846110a5565b60208082528101610af681846110e3565b60208101610af98284611140565b60208082528101610af981611149565b60208082528101610af981611179565b60208082528101610af9816111b2565b60208082528101610af9816111e0565b60208082528101610af981611226565b60208082528101610af98161125f565b60208101610af98284611298565b6040810161140d8286611298565b81810360208301526114208184866110b7565b95945050505050565b60405181810167ffffffffffffffff8111828210171561144857600080fd5b604052919050565b600067ffffffffffffffff82111561146757600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b919050565b6000610af9826114b2565b151590565b6001600160e01b03191690565b6000610af98261148a565b6001600160a01b031690565b90565b6000610af9826114a7565b82818337506000910152565b60005b838110156114f35781810151838201526020016114db565b83811115610e2d5750506000910152565b601f01601f191690565b6115178161148a565b811461152257600080fd5b50565b61151781611495565b611517816114a7565b611517816114be56fea365627a7a72315820ca2aaf531ed3d692639fd8240fdf5db1c3918dc58f88e738d42af9ed907877fd6c6578706572696d656e74616cf564736f6c63430005100040a265627a7a7231582043f1a50ec1e4e2ef45a34295bf027a6c3d74f923722dfa14858f73dcf0dfd23164736f6c63430005100032", + "sourceMap": "138:2544:30:-;;;387:111;8:9:-1;5:2;;;30:1;27;20:12;5:2;387:111:30;426:18;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;418:5:30;:26;;-1:-1:-1;;;;;;418:26:30;-1:-1:-1;;;;;418:26:30;;;;;;;;;;471:20;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;454:14:30;:37;;-1:-1:-1;;;;;;454:37:30;-1:-1:-1;;;;;454:37:30;;;;;;;;;;138:2544;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "138:2544:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;138:2544:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:36;;;:::i;:::-;;;;-1:-1:-1;;;;;344:36:30;;;;;;;;;;;;;;313:25;;;:::i;1784:896::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;1784:896:30;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1784:896:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1784:896:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1784:896:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1784:896:30;;-1:-1:-1;1784:896:30;;-1:-1:-1;;;;;1784:896:30:i;577:98::-;;;:::i;266:40::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;266:40:30;-1:-1:-1;;;;;266:40:30;;:::i;1530:248::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;1530:248:30;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1530:248:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1530:248:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1530:248:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1530:248:30;;-1:-1:-1;1530:248:30;;-1:-1:-1;;;;;1530:248:30:i;778:641::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;778:641:30;-1:-1:-1;;;;;778:641:30;;:::i;344:36::-;;;-1:-1:-1;;;;;344:36:30;;:::o;313:25::-;;;-1:-1:-1;;;;;313:25:30;;:::o;1784:896::-;-1:-1:-1;;;;;2036:14:30;;;1939:15;2036:14;;;;;;;;;;;1939:15;;2036:14;:28;2032:98;;-1:-1:-1;;;;;;2103:14:30;;;:7;:14;;;;;;;;;;;;2080:39;;2032:98;2193:5;;2172:28;;2140:21;;-1:-1:-1;;;;;2193:5:30;;2172:28;;;:::i;:::-;-1:-1:-1;;;;;2172:28:30;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2267:5:30;;2216:58;;;-1:-1:-1;;;;;2216:58:30;;;;;2267:5;;;2216:58;;;;;;2140:61;;-1:-1:-1;2216:58:30;;;;2224:10;;2216:58;;;;;;;;;2301:14;;:25;;;-1:-1:-1;;;2301:25:30;;;;2285:13;;-1:-1:-1;;;;;2301:14:30;;:23;;:25;;;;;;;;;;;;;;2285:13;2301:14;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;2301:25:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2301:25:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2301:25:30;2336:21;;;-1:-1:-1;;;2336:21:30;;-1:-1:-1;;;;;2336:21:30;;;;;;;;;2301:25;;-1:-1:-1;2336:14:30;;;;;;:21;;;;;-1:-1:-1;;2336:21:30;;;;;;;;-1:-1:-1;2336:14:30;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;2336:21:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2336:21:30;;;;2439:5;-1:-1:-1;;;;;2430:23:30;;2467:20;2501:19;2430:100;;;;;;;;;;;;;-1:-1:-1;;;;;2430:100:30;-1:-1:-1;;;;;2430:100:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2430:100:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2430:100:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2430:100:30;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2430:100:30;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;2430:100:30;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2430:100:30;;420:4:-1;411:14;;;;2430:100:30;;;;;411:14:-1;2430:100:30;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2430:100:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2430:100:30;;;;-1:-1:-1;;;2541:35:30;;-1:-1:-1;;;;;2541:35:30;;;;;;;;;:28;;;;-1:-1:-1;2541:28:30;;-1:-1:-1;2541:35:30;;;;;-1:-1:-1;;;;2541:35:30;;;;;;;-1:-1:-1;2541:28:30;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;2541:35:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2541:35:30;;;;2595:5;-1:-1:-1;;;;;2586:24:30;;2611:5;2586:31;;;;;;;;;;;;;-1:-1:-1;;;;;2586:31:30;-1:-1:-1;;;;;2586:31:30;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2586:31:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;2628:14:30;;;:7;:14;;;;;;;;;;:22;;-1:-1:-1;;;;;;2628:22:30;;;;;;;;;;-1:-1:-1;2628:22:30;-1:-1:-1;1784:896:30;;;;;;:::o;577:98::-;610:21;651:17;657:10;651:5;:17::i;:::-;643:25;;577:98;:::o;266:40::-;;;;;;;;;;;;;-1:-1:-1;;;;;266:40:30;;:::o;1530:248::-;1662:15;1696:75;1717:10;1729:20;1751:19;1696:20;:75::i;778:641::-;-1:-1:-1;;;;;921:14:30;;;824:15;921:14;;;;;;;;;;;824:15;;921:14;:28;917:98;;-1:-1:-1;;;;;;988:14:30;;;:7;:14;;;;;;;;;;;;965:39;;917:98;1078:5;;1057:28;;1025:21;;-1:-1:-1;;;;;1078:5:30;;1057:28;;;:::i;:::-;-1:-1:-1;;;;;1057:28:30;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1152:5:30;;1101:58;;;-1:-1:-1;;;;;1101:58:30;;;;;1152:5;;;1101:58;;;;;;1025:61;;-1:-1:-1;1101:58:30;;;;1109:10;;1101:58;;;;;;;;;1186:14;;:25;;;-1:-1:-1;;;1186:25:30;;;;1170:13;;-1:-1:-1;;;;;1186:14:30;;:23;;:25;;;;;;;;;;;;;;1170:13;1186:14;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;1186:25:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1186:25:30;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1186:25:30;1221:21;;;-1:-1:-1;;;1221:21:30;;-1:-1:-1;;;;;1221:21:30;;;;;;;;;1186:25;;-1:-1:-1;1221:14:30;;;;;;:21;;;;;-1:-1:-1;;1221:21:30;;;;;;;;-1:-1:-1;1221:14:30;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;1221:21:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1221:21:30;;;;1289:5;-1:-1:-1;;;;;1280:28:30;;1309:5;1280:35;;;;;;;;;;;;;-1:-1:-1;;;;;1280:35:30;-1:-1:-1;;;;;1280:35:30;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1280:35:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1280:35:30;;;;1334:5;-1:-1:-1;;;;;1325:24:30;;1350:5;1325:31;;;;;;;;;;;;;-1:-1:-1;;;;;1325:31:30;-1:-1:-1;;;;;1325:31:30;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1325:31:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;1367:14:30;;;:7;:14;;;;;;;;;;:22;;-1:-1:-1;;;;;;1367:22:30;;;;;;;;;;-1:-1:-1;1367:22:30;-1:-1:-1;778:641:30;;;;:::o;138:2544::-;;;;;;;;:::o", "source": "pragma solidity 0.5.16;\n\nimport \"./DACProxy.sol\";\n\nimport \"../lib/dapphub/Guard.sol\";\n\nimport \"../interfaces/compound/IComptroller.sol\";\n\ncontract DACProxyFactory {\n event Created(address indexed sender, address indexed owner, address proxy, address cache);\n\n mapping(address=>address) public proxies;\n\n DSProxyCache public cache;\n DSGuardFactory public dsGuardFactory;\n\n constructor() public {\n cache = new DSProxyCache();\n dsGuardFactory = new DSGuardFactory();\n }\n\n // deploys a new proxy instance\n // sets owner of proxy to caller\n function build() public returns (address payable proxy) {\n proxy = build(msg.sender);\n }\n\n // deploys a new proxy instance\n // creates a new guard\n // sets custom owner of proxy\n function build(address owner) public returns (address payable) {\n // If user already has a proxy build, return that instead\n if (proxies[owner] != address(0)) {\n return address(uint160(proxies[owner]));\n }\n\n address payable proxy = address(new DACProxy(address(cache)));\n emit Created(msg.sender, owner, address(proxy), address(cache));\n\n DSGuard guard = dsGuardFactory.newGuard();\n guard.setOwner(proxy); // Guard belongs to proxy\n\n DACProxy(proxy).setAuthority(guard);\n DACProxy(proxy).setOwner(owner);\n\n proxies[owner] = proxy;\n\n return proxy;\n }\n\n // Compound-specific code to enter markets upon proxy creation\n // So user has to perform less TX\n function buildAndEnterMarkets(\n address dedgeCompoundManager,\n bytes memory enterMarketCalldata\n ) public returns (address payable) {\n return buildAndEnterMarkets(msg.sender, dedgeCompoundManager, enterMarketCalldata);\n }\n\n function buildAndEnterMarkets(\n address owner,\n address dedgeCompoundManager,\n bytes memory enterMarketCalldata\n ) public returns (address payable) {\n // If user already has a proxy build, return that instead\n if (proxies[owner] != address(0)) {\n return address(uint160(proxies[owner]));\n }\n\n address payable proxy = address(new DACProxy(address(cache)));\n emit Created(msg.sender, owner, address(proxy), address(cache));\n\n DSGuard guard = dsGuardFactory.newGuard();\n guard.setOwner(proxy); // Guard belongs to proxy\n\n // Enter markets via proxy\n DACProxy(proxy).execute(\n dedgeCompoundManager,\n enterMarketCalldata\n );\n\n DACProxy(proxy).setAuthority(guard);\n DACProxy(proxy).setOwner(owner);\n\n proxies[owner] = proxy;\n\n return proxy;\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxyFactory.sol", "ast": { @@ -7010,50 +7010,12 @@ } }, "links": {}, - "address": "0xb06121EA08019dF9F7F3eA76b465067bfA3f7f5F", - "transactionHash": "0x0490e4a52161ef07943fe7bb526689d9d849a61e7b2f479f9e08bc32a1f4826b" - }, - "5777": { - "events": { - "0x259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "proxy", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "cache", - "type": "address" - } - ], - "name": "Created", - "type": "event" - } - }, - "links": {}, - "address": "0xCfEB869F69431e42cdB54A4F4f105C19C080A601", - "transactionHash": "0x4db88709fd4523a8fab6029cecf96f7ffa1748c670e3e0b554088a3bbd8efc59" + "address": "0x572bfabaeb0f7F5d65EEa04D85595010756Ba986", + "transactionHash": "0x3db794499693b153423023016176177e7fbd746f068e24d3f4a8a18a2c2688d2" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T05:45:42.858Z", + "updatedAt": "2020-04-03T06:28:59.247Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DSAuth.json b/packages/smart-contracts/artifacts/DSAuth.json index fc9d8e5..0073a19 100644 --- a/packages/smart-contracts/artifacts/DSAuth.json +++ b/packages/smart-contracts/artifacts/DSAuth.json @@ -94,11 +94,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":\"DSAuth\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a26106d6806100a46000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806313af4035146100515780637a9e5e4b146100955780638da5cb5b146100d9578063bf7e214f14610123575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061016d565b005b6100d7600480360360208110156100ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102b6565b005b6100e16103fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61012b610423565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61019b336000357fffffffff0000000000000000000000000000000000000000000000000000000016610448565b61020d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b6102e4336000357fffffffff0000000000000000000000000000000000000000000000000000000016610448565b610356576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610487576001905061069b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104e6576001905061069b565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610545576000905061069b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561065d57600080fd5b505afa158015610671573d6000803e3d6000fd5b505050506040513d602081101561068757600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a72315820975f6b7a42cfca29a56cb4f69fcbfb3d290ce0f923e9da36090fba459e4152e764736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806313af4035146100515780637a9e5e4b146100955780638da5cb5b146100d9578063bf7e214f14610123575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061016d565b005b6100d7600480360360208110156100ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102b6565b005b6100e16103fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61012b610423565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61019b336000357fffffffff0000000000000000000000000000000000000000000000000000000016610448565b61020d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b6102e4336000357fffffffff0000000000000000000000000000000000000000000000000000000016610448565b610356576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610487576001905061069b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104e6576001905061069b565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610545576000905061069b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561065d57600080fd5b505afa158015610671573d6000803e3d6000fd5b505050506040513d602081101561068757600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a72315820975f6b7a42cfca29a56cb4f69fcbfb3d290ce0f923e9da36090fba459e4152e764736f6c63430005100032", - "sourceMap": "928:1007:17:-;;;1035:94;8:9:-1;5:2;;;30:1;27;20:12;5:2;1035:94:17;1074:10;1066:5;;:18;;;;;;;;;;;;;;;;;;1111:10;1099:23;;;;;;;;;;;;928:1007;;;;;;", - "deployedSourceMap": "928:1007:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;928:1007:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1135:130:17;;;;;;;;;;;;;;;;;;;:::i;:::-;;1271:167;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1271:167:17;;;;;;;;;;;;;;;;;;;:::i;:::-;;1002:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;966:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1135:130;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1219:6;1211:5;;:14;;;;;;;;;;;;;;;;;;1252:5;;;;;;;;;;;1240:18;;;;;;;;;;;;1135:130;:::o;1271:167::-;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1371:10;1359:9;;:22;;;;;;;;;;;;;;;;;;1420:9;;;;;;;;;;;1396:35;;;;;;;;;;;;1271:167;:::o;1002:26::-;;;;;;;;;;;;;:::o;966:30::-;;;;;;;;;;;;;:::o;1558:375::-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1874:42:17;;;;;;;;;;;;;;;;1867:49;;1558:375;;;;;:::o", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":\"DSAuth\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50600180546001600160a01b031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a261035f8061005e6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806313af4035146100515780637a9e5e4b146100795780638da5cb5b1461009f578063bf7e214f146100c3575b600080fd5b6100776004803603602081101561006757600080fd5b50356001600160a01b03166100cb565b005b6100776004803603602081101561008f57600080fd5b50356001600160a01b0316610179565b6100a7610223565b604080516001600160a01b039092168252519081900360200190f35b6100a7610232565b6100e1336000356001600160e01b031916610241565b610129576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b61018f336000356001600160e01b031916610241565b6101d7576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000546001600160a01b031681565b60006001600160a01b03831630141561025c57506001610324565b6001546001600160a01b038481169116141561027a57506001610324565b6000546001600160a01b031661029257506000610324565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b1580156102f557600080fd5b505afa158015610309573d6000803e3d6000fd5b505050506040513d602081101561031f57600080fd5b505190505b9291505056fea265627a7a72315820b3e8d0e398277d74c9f9e1cf56c828c1eaad7a3e22614f39a88f3f736353ca3f64736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806313af4035146100515780637a9e5e4b146100795780638da5cb5b1461009f578063bf7e214f146100c3575b600080fd5b6100776004803603602081101561006757600080fd5b50356001600160a01b03166100cb565b005b6100776004803603602081101561008f57600080fd5b50356001600160a01b0316610179565b6100a7610223565b604080516001600160a01b039092168252519081900360200190f35b6100a7610232565b6100e1336000356001600160e01b031916610241565b610129576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b61018f336000356001600160e01b031916610241565b6101d7576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000546001600160a01b031681565b60006001600160a01b03831630141561025c57506001610324565b6001546001600160a01b038481169116141561027a57506001610324565b6000546001600160a01b031661029257506000610324565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b1580156102f557600080fd5b505afa158015610309573d6000803e3d6000fd5b505050506040513d602081101561031f57600080fd5b505190505b9291505056fea265627a7a72315820b3e8d0e398277d74c9f9e1cf56c828c1eaad7a3e22614f39a88f3f736353ca3f64736f6c63430005100032", + "sourceMap": "928:1007:17:-;;;1035:94;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1066:5:17;:18;;-1:-1:-1;;;;;;1066:18:17;1074:10;1066:18;;;;;;1099:23;;;;1066:5;;1099:23;928:1007;;;;;;", + "deployedSourceMap": "928:1007:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;928:1007:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1135:130:17;-1:-1:-1;;;;;1135:130:17;;:::i;:::-;;1271:167;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1271:167:17;-1:-1:-1;;;;;1271:167:17;;:::i;1002:26::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1002:26:17;;;;;;;;;;;;;;966:30;;;:::i;1135:130::-;1476:33;1489:10;1501:7;;-1:-1:-1;;;;;;1501:7:17;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1211:5;:14;;-1:-1:-1;;;;;;1211:14:17;-1:-1:-1;;;;;1211:14:17;;;;;;;;;;;1240:18;;1252:5;;;1240:18;;-1:-1:-1;;1240:18:17;1135:130;:::o;1271:167::-;1476:33;1489:10;1501:7;;-1:-1:-1;;;;;;1501:7:17;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1359:9;:22;;-1:-1:-1;;;;;;1359:22:17;-1:-1:-1;;;;;1359:22:17;;;;;;;;;;1396:35;;1420:9;;;1396:35;;;1271:167;:::o;1002:26::-;;;-1:-1:-1;;;;;1002:26:17;;:::o;966:30::-;;;-1:-1:-1;;;;;966:30:17;;:::o;1558:375::-;1628:4;-1:-1:-1;;;;;1648:20:17;;1663:4;1648:20;1644:283;;;-1:-1:-1;1691:4:17;1684:11;;1644:283;1723:5;;-1:-1:-1;;;;;1716:12:17;;;1723:5;;1716:12;1712:215;;;-1:-1:-1;1751:4:17;1744:11;;1712:215;1806:1;1784:9;-1:-1:-1;;;;;1784:9:17;1772:155;;-1:-1:-1;1831:5:17;1824:12;;1772:155;1874:9;;:42;;;-1:-1:-1;;;1874:42:17;;-1:-1:-1;;;;;1874:42:17;;;;;;;1905:4;1874:42;;;;-1:-1:-1;;;;;;1874:42:17;;;;;;;;:9;;;;;:17;;:42;;;;;;;;;;;;;;:9;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1874:42:17;;-1:-1:-1;1772:155:17;1558:375;;;;:::o", "source": "// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity 0.5.16;\n\ncontract DSAuthority {\n function canCall(\n address src, address dst, bytes4 sig\n ) public view returns (bool);\n}\n\ncontract DSAuthEvents {\n event LogSetAuthority (address indexed authority);\n event LogSetOwner (address indexed owner);\n}\n\ncontract DSAuth is DSAuthEvents {\n DSAuthority public authority;\n address public owner;\n\n constructor() public {\n owner = msg.sender;\n emit LogSetOwner(msg.sender);\n }\n\n function setOwner(address owner_)\n public\n auth\n {\n owner = owner_;\n emit LogSetOwner(owner);\n }\n\n function setAuthority(DSAuthority authority_)\n public\n auth\n {\n authority = authority_;\n emit LogSetAuthority(address(authority));\n }\n\n modifier auth {\n require(isAuthorized(msg.sender, msg.sig), \"ds-auth-unauthorized\");\n _;\n }\n\n function isAuthorized(address src, bytes4 sig) internal view returns (bool) {\n if (src == address(this)) {\n return true;\n } else if (src == owner) {\n return true;\n } else if (address(authority) == address(0)) {\n return false;\n } else {\n return authority.canCall(src, address(this), sig);\n }\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol", "ast": { @@ -509,7 +509,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1074:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -552,7 +552,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1111:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1059,7 +1059,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1489:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1088,7 +1088,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1501:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1180,10 +1180,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1468:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1270,7 +1270,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1663:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -1522,7 +1522,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1905:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -2269,7 +2269,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1074:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2312,7 +2312,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1111:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2819,7 +2819,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1489:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2848,7 +2848,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1501:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2940,10 +2940,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1468:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -3030,7 +3030,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1663:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -3282,7 +3282,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1905:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -3627,7 +3627,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.809Z", + "updatedAt": "2020-04-03T06:25:13.489Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSAuthEvents.json b/packages/smart-contracts/artifacts/DSAuthEvents.json index c3939c2..17e02a2 100644 --- a/packages/smart-contracts/artifacts/DSAuthEvents.json +++ b/packages/smart-contracts/artifacts/DSAuthEvents.json @@ -28,9 +28,9 @@ "type": "event" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":\"DSAuthEvents\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]}},\"version\":1}", - "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582098e39723f40c3a46c2834c1e31d6fe8c565e4fc3a9da0ee093382f945156dddd64736f6c63430005100032", - "deployedBytecode": "0x6080604052600080fdfea265627a7a7231582098e39723f40c3a46c2834c1e31d6fe8c565e4fc3a9da0ee093382f945156dddd64736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":\"DSAuthEvents\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]}},\"version\":1}", + "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820b69de992e67cf758b03cd292dd083a4ccf3e700e6f7e4643cbbe449b9d201c7b64736f6c63430005100032", + "deployedBytecode": "0x6080604052600080fdfea265627a7a72315820b69de992e67cf758b03cd292dd083a4ccf3e700e6f7e4643cbbe449b9d201c7b64736f6c63430005100032", "sourceMap": "795:131:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;795:131:17;;;;;;;", "deployedSourceMap": "795:131:17:-;;;;;", "source": "// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity 0.5.16;\n\ncontract DSAuthority {\n function canCall(\n address src, address dst, bytes4 sig\n ) public view returns (bool);\n}\n\ncontract DSAuthEvents {\n event LogSetAuthority (address indexed authority);\n event LogSetOwner (address indexed owner);\n}\n\ncontract DSAuth is DSAuthEvents {\n DSAuthority public authority;\n address public owner;\n\n constructor() public {\n owner = msg.sender;\n emit LogSetOwner(msg.sender);\n }\n\n function setOwner(address owner_)\n public\n auth\n {\n owner = owner_;\n emit LogSetOwner(owner);\n }\n\n function setAuthority(DSAuthority authority_)\n public\n auth\n {\n authority = authority_;\n emit LogSetAuthority(address(authority));\n }\n\n modifier auth {\n require(isAuthorized(msg.sender, msg.sig), \"ds-auth-unauthorized\");\n _;\n }\n\n function isAuthorized(address src, bytes4 sig) internal view returns (bool) {\n if (src == address(this)) {\n return true;\n } else if (src == owner) {\n return true;\n } else if (address(authority) == address(0)) {\n return false;\n } else {\n return authority.canCall(src, address(this), sig);\n }\n }\n}", @@ -443,7 +443,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1074:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -486,7 +486,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1111:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -993,7 +993,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1489:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1022,7 +1022,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1501:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1114,10 +1114,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1468:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1204,7 +1204,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1663:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -1456,7 +1456,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1905:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -2203,7 +2203,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1074:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2246,7 +2246,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1111:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2753,7 +2753,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1489:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2782,7 +2782,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1501:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2874,10 +2874,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1468:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2964,7 +2964,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1663:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -3216,7 +3216,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1905:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -3561,7 +3561,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.811Z", + "updatedAt": "2020-04-03T06:25:13.491Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSAuthority.json b/packages/smart-contracts/artifacts/DSAuthority.json index 72b801b..91aeb59 100644 --- a/packages/smart-contracts/artifacts/DSAuthority.json +++ b/packages/smart-contracts/artifacts/DSAuthority.json @@ -33,7 +33,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":\"DSAuthority\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":\"DSAuthority\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -448,7 +448,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1074:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -491,7 +491,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1111:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -998,7 +998,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1489:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1027,7 +1027,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1501:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1119,10 +1119,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1468:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1209,7 +1209,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1663:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -1461,7 +1461,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1905:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -2208,7 +2208,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1074:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2251,7 +2251,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1111:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2758,7 +2758,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1489:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2787,7 +2787,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1501:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2879,10 +2879,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1468:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2969,7 +2969,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1663:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -3221,7 +3221,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7961, + "referencedDeclaration": 7883, "src": "1905:4:17", "typeDescriptions": { "typeIdentifier": "t_contract$_DSAuth_$2924", @@ -3566,7 +3566,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.813Z", + "updatedAt": "2020-04-03T06:25:13.492Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSGuard.json b/packages/smart-contracts/artifacts/DSGuard.json index cb8691e..ba8ac68 100644 --- a/packages/smart-contracts/artifacts/DSGuard.json +++ b/packages/smart-contracts/artifacts/DSGuard.json @@ -284,11 +284,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"LogForbid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"LogPermit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"ANY\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst_\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"forbid\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"forbid\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":\"DSGuard\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]}},\"version\":1}", - "bytecode": "0x608060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a26110c1806100976000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610225578063b700961314610243578063bf7e214f146102e8578063cbeea68c14610332578063f0217ce5146103a05761009e565b806313af4035146100a35780632bc3217d146100e757806379d88d87146101555780637a9e5e4b146101975780638da5cb5b146101db575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e2565b005b610153600480360360608110156100fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061052b565b005b6101956004803603606081101561016b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061055f565b005b6101d9600480360360208110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610681565b005b6101e36107c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61022d6107ee565b6040518082815260200191505060405180910390f35b6102ce6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610815565b604051808215151515815260200191505060405180910390f35b6102f0610cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039e6004803603606081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cdd565b005b6103e0600480360360608110156103b657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610d11565b005b610410336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b61055a8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff19168361055f565b505050565b61058d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b6105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282960405160405180910390a4505050565b6106af336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b6000808460601b6bffffffffffffffffffffffff1916905060008460601b6bffffffffffffffffffffffff191690506002600083815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1680610913575060026000838152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b8061099f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610a2f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610abb5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610b4b5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610bfa5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610cad5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b925050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d0c8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff191683610d11565b505050565b610d3f336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610db1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6001600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677160405160405180910390a4505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e725760019050611086565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed15760019050611086565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f305760009050611086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a72315820b36af45f5c962802069634aca499d531cac1aeed514356b0d518c59cf816ca6264736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610225578063b700961314610243578063bf7e214f146102e8578063cbeea68c14610332578063f0217ce5146103a05761009e565b806313af4035146100a35780632bc3217d146100e757806379d88d87146101555780637a9e5e4b146101975780638da5cb5b146101db575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e2565b005b610153600480360360608110156100fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061052b565b005b6101956004803603606081101561016b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061055f565b005b6101d9600480360360208110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610681565b005b6101e36107c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61022d6107ee565b6040518082815260200191505060405180910390f35b6102ce6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610815565b604051808215151515815260200191505060405180910390f35b6102f0610cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039e6004803603606081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cdd565b005b6103e0600480360360608110156103b657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610d11565b005b610410336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b61055a8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff19168361055f565b505050565b61058d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b6105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282960405160405180910390a4505050565b6106af336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b6000808460601b6bffffffffffffffffffffffff1916905060008460601b6bffffffffffffffffffffffff191690506002600083815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1680610913575060026000838152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b8061099f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610a2f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610abb5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610b4b5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610bfa5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610cad5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b925050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d0c8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff191683610d11565b505050565b610d3f336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610db1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6001600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677160405160405180910390a4505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e725760019050611086565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed15760019050611086565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f305760009050611086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a72315820b36af45f5c962802069634aca499d531cac1aeed514356b0d518c59cf816ca6264736f6c63430005100032", - "sourceMap": "1048:1259:18:-;;;1074:10:17;1066:5;;:18;;;;;;;;;;;;;;;;;;1111:10;1099:23;;;;;;;;;;;;1048:1259:18;;;;;;", - "deployedSourceMap": "1048:1259:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1048:1259:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1135:130:17;;;;;;;;;;;;;;;;;;;:::i;:::-;;2168:136:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2168:136:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1872:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1872:149:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1271:167:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1271:167:17;;;;;;;;;;;;;;;;;;;:::i;:::-;;1002:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1109:47:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1241:471;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1241:471:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;966:30:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2027:136:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2027:136:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1718:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1718:148:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1135:130:17;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1219:6;1211:5;;:14;;;;;;;;;;;;;;;;;;1252:5;;;;;;;;;;;1240:18;;;;;;;;;;;;1135:130;:::o;2168:136:18:-;2240:57;2263:3;2255:12;;2247:21;;;2286:3;2278:12;;2270:21;;;2293:3;2240:6;:57::i;:::-;2168:136;;;:::o;1872:149::-;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:5:18;1949:3;:8;1953:3;1949:8;;;;;;;;;;;:13;1958:3;1949:13;;;;;;;;;;;:18;1963:3;1949:18;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2010:3;2005;2000;1990:24;;;;;;;;;;1872:149;;;:::o;1271:167:17:-;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1371:10;1359:9;;:22;;;;;;;;;;;;;;;;;;1420:9;;;;;;;;;;;1396:35;;;;;;;;;;;;1271:167;:::o;1002:26::-;;;;;;;;;;;;;:::o;1109:47:18:-;1152:2;1139:17;;1109:47;:::o;1241:471::-;1333:4;1349:11;1379:4;1371:13;;1363:22;;;1349:36;;1395:11;1425:4;1417:13;;1409:22;;;1395:36;;1449:3;:8;1453:3;1449:8;;;;;;;;;;;:13;1458:3;1449:13;;;;;;;;;;;:18;1463:3;1449:18;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;1483:3;:8;1487:3;1483:8;;;;;;;;;;;:13;1492:3;1483:13;;;;;;;;;;;:18;1152:2;1139:17;;1483:18;;;;;;;;;;;;;;;;;;;;;1449:52;:86;;;;1517:3;:8;1521:3;1517:8;;;;;;;;;;;:13;1152:2;1139:17;;1517:13;;;;;;;;;;;:18;1531:3;1517:18;;;;;;;;;;;;;;;;;;;;;;;;1449:86;:120;;;;1551:3;:8;1555:3;1551:8;;;;;;;;;;;:13;1152:2;1139:17;;1551:13;;;;;;;;;;;:18;1152:2;1139:17;;1551:18;;;;;;;;;;;;;;;;;;;;;1449:120;:154;;;;1585:3;:8;1152:2;1139:17;;1585:8;;;;;;;;;;;:13;1594:3;1585:13;;;;;;;;;;;:18;1599:3;1585:18;;;;;;;;;;;;;;;;;;;;;;;;1449:154;:188;;;;1619:3;:8;1152:2;1139:17;;1619:8;;;;;;;;;;;:13;1628:3;1619:13;;;;;;;;;;;:18;1152:2;1139:17;;1619:18;;;;;;;;;;;;;;;;;;;;;1449:188;:222;;;;1653:3;:8;1152:2;1139:17;;1653:8;;;;;;;;;;;:13;1152:2;1139:17;;1653:13;;;;;;;;;;;:18;1667:3;1653:18;;;;;;;;;;;;;;;;;;;;;;;;1449:222;:256;;;;1687:3;:8;1152:2;1139:17;;1687:8;;;;;;;;;;;:13;1152:2;1139:17;;1687:13;;;;;;;;;;;:18;1152:2;1139:17;;1687:18;;;;;;;;;;;;;;;;;;;;;1449:256;1442:263;;;;1241:471;;;;;:::o;966:30:17:-;;;;;;;;;;;;;:::o;2027:136:18:-;2099:57;2122:3;2114:12;;2106:21;;;2145:3;2137:12;;2129:21;;;2152:3;2099:6;:57::i;:::-;2027:136;;;:::o;1718:148::-;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1816:4:18;1795:3;:8;1799:3;1795:8;;;;;;;;;;;:13;1804:3;1795:13;;;;;;;;;;;:18;1809:3;1795:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;1855:3;1850;1845;1835:24;;;;;;;;;;1718:148;;;:::o;1558:375:17:-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1874:42:17;;;;;;;;;;;;;;;;1867:49;;1558:375;;;;;:::o", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"LogForbid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"LogPermit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"ANY\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst_\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"forbid\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"forbid\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":\"DSGuard\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]}},\"version\":1}", + "bytecode": "0x60806040819052600180546001600160a01b03191633908117909155907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a26108b5806100516000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610174578063b70096131461018e578063bf7e214f146101e3578063cbeea68c146101eb578063f0217ce5146102215761009e565b806313af4035146100a35780632bc3217d146100cb57806379d88d87146101015780637a9e5e4b1461012a5780638da5cb5b14610150575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661024a565b005b6100c9600480360360608110156100e157600080fd5b506001600160a01b038135811691602081013590911690604001356102f8565b6100c96004803603606081101561011757600080fd5b5080359060208101359060400135610322565b6100c96004803603602081101561014057600080fd5b50356001600160a01b03166103d9565b610158610483565b604080516001600160a01b039092168252519081900360200190f35b61017c610492565b60408051918252519081900360200190f35b6101cf600480360360608110156101a457600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160e01b031916610498565b604080519115158252519081900360200190f35b6101586106ad565b6100c96004803603606081101561020157600080fd5b506001600160a01b038135811691602081013590911690604001356106bc565b6100c96004803603606081101561023757600080fd5b50803590602081013590604001356106dd565b610260336000356001600160e01b031916610797565b6102a8576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b61031d8360601b6001600160601b0319168360601b6001600160601b03191683610322565b505050565b610338336000356001600160e01b031916610797565b610380576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19169055518291849186917f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282991a4505050565b6103ef336000356001600160e01b031916610797565b610437576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b60001981565b6bffffffffffffffffffffffff19606084811b821660008181526002602090815260408083209488901b9095168083529381528482206001600160e01b03198716835290529283205490919060ff1680610515575060008281526002602090815260408083208484528252808320600019845290915290205460ff165b8061054d57506000828152600260209081526040808320600019845282528083206001600160e01b03198816845290915290205460ff165b80610578575060008281526002602090815260408083206000198452825280832090915290205460ff165b806105c5575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb602090815260408083206001600160e01b03198816845290915290205460ff165b8061060a575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb60209081526040808320600019845290915290205460ff165b8061064d57506001600160e01b0319841660009081527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d97602052604090205460ff165b806106a357506000196000527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d976020527ff423d1317b37667cd26005728bffa7c8b0499e133951fcf8e814d4fc5f4c98f65460ff165b9695505050505050565b6000546001600160a01b031681565b61031d8360601b6001600160601b0319168360601b6001600160601b031916835b6106f3336000356001600160e01b031916610797565b61073b576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19166001179055518291849186917f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677191a4505050565b60006001600160a01b0383163014156107b25750600161087a565b6001546001600160a01b03848116911614156107d05750600161087a565b6000546001600160a01b03166107e85750600061087a565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561084b57600080fd5b505afa15801561085f573d6000803e3d6000fd5b505050506040513d602081101561087557600080fd5b505190505b9291505056fea265627a7a7231582002f13cb32032449838808dd8f202e7345ece3907f6e1ea30707f04c2b7b30b2764736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610174578063b70096131461018e578063bf7e214f146101e3578063cbeea68c146101eb578063f0217ce5146102215761009e565b806313af4035146100a35780632bc3217d146100cb57806379d88d87146101015780637a9e5e4b1461012a5780638da5cb5b14610150575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661024a565b005b6100c9600480360360608110156100e157600080fd5b506001600160a01b038135811691602081013590911690604001356102f8565b6100c96004803603606081101561011757600080fd5b5080359060208101359060400135610322565b6100c96004803603602081101561014057600080fd5b50356001600160a01b03166103d9565b610158610483565b604080516001600160a01b039092168252519081900360200190f35b61017c610492565b60408051918252519081900360200190f35b6101cf600480360360608110156101a457600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160e01b031916610498565b604080519115158252519081900360200190f35b6101586106ad565b6100c96004803603606081101561020157600080fd5b506001600160a01b038135811691602081013590911690604001356106bc565b6100c96004803603606081101561023757600080fd5b50803590602081013590604001356106dd565b610260336000356001600160e01b031916610797565b6102a8576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b61031d8360601b6001600160601b0319168360601b6001600160601b03191683610322565b505050565b610338336000356001600160e01b031916610797565b610380576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19169055518291849186917f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282991a4505050565b6103ef336000356001600160e01b031916610797565b610437576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b60001981565b6bffffffffffffffffffffffff19606084811b821660008181526002602090815260408083209488901b9095168083529381528482206001600160e01b03198716835290529283205490919060ff1680610515575060008281526002602090815260408083208484528252808320600019845290915290205460ff165b8061054d57506000828152600260209081526040808320600019845282528083206001600160e01b03198816845290915290205460ff165b80610578575060008281526002602090815260408083206000198452825280832090915290205460ff165b806105c5575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb602090815260408083206001600160e01b03198816845290915290205460ff165b8061060a575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb60209081526040808320600019845290915290205460ff165b8061064d57506001600160e01b0319841660009081527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d97602052604090205460ff165b806106a357506000196000527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d976020527ff423d1317b37667cd26005728bffa7c8b0499e133951fcf8e814d4fc5f4c98f65460ff165b9695505050505050565b6000546001600160a01b031681565b61031d8360601b6001600160601b0319168360601b6001600160601b031916835b6106f3336000356001600160e01b031916610797565b61073b576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19166001179055518291849186917f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677191a4505050565b60006001600160a01b0383163014156107b25750600161087a565b6001546001600160a01b03848116911614156107d05750600161087a565b6000546001600160a01b03166107e85750600061087a565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561084b57600080fd5b505afa15801561085f573d6000803e3d6000fd5b505050506040513d602081101561087557600080fd5b505190505b9291505056fea265627a7a7231582002f13cb32032449838808dd8f202e7345ece3907f6e1ea30707f04c2b7b30b2764736f6c63430005100032", + "sourceMap": "1048:1259:18:-;;;;;1066:5:17;:18;;-1:-1:-1;;;;;;1066:18:17;1074:10;1066:18;;;;;;1074:10;1099:23;;-1:-1:-1;;1099:23:17;1048:1259:18;;;;;;", + "deployedSourceMap": "1048:1259:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1048:1259:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1135:130:17;-1:-1:-1;;;;;1135:130:17;;:::i;:::-;;2168:136:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2168:136:18;;;;;;;;;;;;;;;;;:::i;1872:149::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1872:149:18;;;;;;;;;;;;:::i;1271:167:17:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1271:167:17;-1:-1:-1;;;;;1271:167:17;;:::i;1002:26::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1002:26:17;;;;;;;;;;;;;;1109:47:18;;;:::i;:::-;;;;;;;;;;;;;;;;1241:471;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1241:471:18;;-1:-1:-1;;;;;1241:471:18;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1241:471:18;;:::i;:::-;;;;;;;;;;;;;;;;;;966:30:17;;;:::i;2027:136:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2027:136:18;;;;;;;;;;;;;;;;;:::i;1718:148::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1718:148:18;;;;;;;;;;;;:::i;1135:130:17:-;1476:33;1489:10;1501:7;;-1:-1:-1;;;;;;1501:7:17;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1211:5;:14;;-1:-1:-1;;;;;;1211:14:17;-1:-1:-1;;;;;1211:14:17;;;;;;;;;;;1240:18;;1252:5;;;1240:18;;-1:-1:-1;;1240:18:17;1135:130;:::o;2168:136:18:-;2240:57;-1:-1:-1;2255:12:18;;;-1:-1:-1;;;;;;2247:21:18;;;;2278:12;;;2270:21;2293:3;2240:6;:57::i;:::-;2168:136;;;:::o;1872:149::-;1476:33:17;1489:10;1501:7;;-1:-1:-1;;;;;;1501:7:17;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1970:5:18;1949:8;;;:3;:8;;;;;;;;:13;;;;;;;;:18;;;;;;;;;:26;;-1:-1:-1;;1949:26:18;;;1990:24;1949:18;;:13;;:8;;1990:24;;;1872:149;;;:::o;1271:167:17:-;1476:33;1489:10;1501:7;;-1:-1:-1;;;;;;1501:7:17;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1359:9;:22;;-1:-1:-1;;;;;;1359:22:17;-1:-1:-1;;;;;1359:22:17;;;;;;;;;;1396:35;;1420:9;;;1396:35;;;1271:167;:::o;1002:26::-;;;-1:-1:-1;;;;;1002:26:17;;:::o;1109:47:18:-;-1:-1:-1;;1109:47:18;:::o;1241:471::-;-1:-1:-1;;;;;;;1371:13:18;;;1363:22;;1333:4;1449:8;;;:3;:8;;;;;;;;1417:13;;;;1409:22;;;1449:13;;;;;;;;;-1:-1:-1;;;;;;1449:18:18;;;;;;;;;;1363:22;;1409;1449:18;;;:52;;-1:-1:-1;1483:8:18;;;;:3;:8;;;;;;;;:13;;;;;;;;-1:-1:-1;;1483:18:18;;;;;;;;;;1449:52;:86;;;-1:-1:-1;1517:8:18;;;;:3;:8;;;;;;;;-1:-1:-1;;1517:13:18;;;;;;;-1:-1:-1;;;;;;1517:18:18;;;;;;;;;;;;1449:86;:120;;;-1:-1:-1;1551:8:18;;;;:3;:8;;;;;;;;-1:-1:-1;;1551:13:18;;;;;;;:18;;;;;;;;1449:120;:154;;;-1:-1:-1;1585:8:18;:13;;;:8;;:13;;;:8;:13;;;-1:-1:-1;;;;;;1585:18:18;;;;;;;;;;;;1449:154;:188;;;-1:-1:-1;1619:8:18;:13;;;:8;;:13;;;:8;:13;;;-1:-1:-1;;1619:18:18;;;;;;;;;;1449:188;:222;;;-1:-1:-1;;;;;;;1653:18:18;;:8;:18;;;:13;:8;:18;:8;:18;;;;;1449:222;:256;;;-1:-1:-1;;;;1687:8:18;:13;:8;:18;;;;;1449:256;1442:263;1241:471;-1:-1:-1;;;;;;1241:471:18:o;966:30:17:-;;;-1:-1:-1;;;;;966:30:17;;:::o;2027:136:18:-;2099:57;-1:-1:-1;2114:12:18;;;-1:-1:-1;;;;;;2106:21:18;;;;2137:12;;;2129:21;2152:3;1718:148;1476:33:17;1489:10;1501:7;;-1:-1:-1;;;;;;1501:7:17;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1795:8:18;;;;:3;:8;;;;;;;;:13;;;;;;;;:18;;;;;;;;;:25;;-1:-1:-1;;1795:25:18;1816:4;1795:25;;;1835:24;1809:3;;1804;;1799;;1835:24;;;1718:148;;;:::o;1558:375:17:-;1628:4;-1:-1:-1;;;;;1648:20:17;;1663:4;1648:20;1644:283;;;-1:-1:-1;1691:4:17;1684:11;;1644:283;1723:5;;-1:-1:-1;;;;;1716:12:17;;;1723:5;;1716:12;1712:215;;;-1:-1:-1;1751:4:17;1744:11;;1712:215;1806:1;1784:9;-1:-1:-1;;;;;1784:9:17;1772:155;;-1:-1:-1;1831:5:17;1824:12;;1772:155;1874:9;;:42;;;-1:-1:-1;;;1874:42:17;;-1:-1:-1;;;;;1874:42:17;;;;;;;1905:4;1874:42;;;;-1:-1:-1;;;;;;1874:42:17;;;;;;;;:9;;;;;-1:-1:-1;;1874:42:17;;;;;;;;;;;;;;:9;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1874:42:17;;-1:-1:-1;1772:155:17;1558:375;;;;:::o", "source": "// guard.sol -- simple whitelist implementation of DSAuthority\n\n// Copyright (C) 2017 DappHub, LLC\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity 0.5.16;\n\nimport \"./Auth.sol\";\n\ncontract DSGuardEvents {\n event LogPermit(\n bytes32 indexed src,\n bytes32 indexed dst,\n bytes32 indexed sig\n );\n\n event LogForbid(\n bytes32 indexed src,\n bytes32 indexed dst,\n bytes32 indexed sig\n );\n}\n\ncontract DSGuard is DSAuth, DSAuthority, DSGuardEvents {\n bytes32 constant public ANY = bytes32(uint(-1));\n\n mapping (bytes32 => mapping (bytes32 => mapping (bytes32 => bool))) acl;\n\n function canCall(\n address src_, address dst_, bytes4 sig\n ) public view returns (bool) {\n bytes32 src = bytes32(bytes20(src_));\n bytes32 dst = bytes32(bytes20(dst_));\n\n return acl[src][dst][sig]\n || acl[src][dst][ANY]\n || acl[src][ANY][sig]\n || acl[src][ANY][ANY]\n || acl[ANY][dst][sig]\n || acl[ANY][dst][ANY]\n || acl[ANY][ANY][sig]\n || acl[ANY][ANY][ANY];\n }\n\n function permit(bytes32 src, bytes32 dst, bytes32 sig) public auth {\n acl[src][dst][sig] = true;\n emit LogPermit(src, dst, sig);\n }\n\n function forbid(bytes32 src, bytes32 dst, bytes32 sig) public auth {\n acl[src][dst][sig] = false;\n emit LogForbid(src, dst, sig);\n }\n\n function permit(address src, address dst, bytes32 sig) public {\n permit(bytes32(bytes20(src)), bytes32(bytes20(dst)), sig);\n }\n function forbid(address src, address dst, bytes32 sig) public {\n forbid(bytes32(bytes20(src)), bytes32(bytes20(dst)), sig);\n }\n\n}\n\ncontract DSGuardFactory {\n mapping (address => bool) public isGuard;\n\n function newGuard() public returns (DSGuard guard) {\n guard = new DSGuard();\n guard.setOwner(msg.sender);\n isGuard[address(guard)] = true;\n }\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol", "ast": { @@ -3690,7 +3690,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "2495:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7342,7 +7342,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "2495:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7601,7 +7601,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.816Z", + "updatedAt": "2020-04-03T06:25:13.494Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSGuardEvents.json b/packages/smart-contracts/artifacts/DSGuardEvents.json index d7e5a44..e734d3b 100644 --- a/packages/smart-contracts/artifacts/DSGuardEvents.json +++ b/packages/smart-contracts/artifacts/DSGuardEvents.json @@ -52,9 +52,9 @@ "type": "event" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"LogForbid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"LogPermit\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":\"DSGuardEvents\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]}},\"version\":1}", - "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820909f8dc57c0bed01c0017582e1df76fd9cb0c3882f2f458d1363fa8c0c8e6a1b64736f6c63430005100032", - "deployedBytecode": "0x6080604052600080fdfea265627a7a72315820909f8dc57c0bed01c0017582e1df76fd9cb0c3882f2f458d1363fa8c0c8e6a1b64736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"LogForbid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"src\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dst\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sig\",\"type\":\"bytes32\"}],\"name\":\"LogPermit\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":\"DSGuardEvents\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]}},\"version\":1}", + "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820f585898910e0b6b544f73bddcdca9404f30511182d3150cb2ff0199ed036be5564736f6c63430005100032", + "deployedBytecode": "0x6080604052600080fdfea265627a7a72315820f585898910e0b6b544f73bddcdca9404f30511182d3150cb2ff0199ed036be5564736f6c63430005100032", "sourceMap": "791:255:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;791:255:18;;;;;;;", "deployedSourceMap": "791:255:18:-;;;;;", "source": "// guard.sol -- simple whitelist implementation of DSAuthority\n\n// Copyright (C) 2017 DappHub, LLC\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity 0.5.16;\n\nimport \"./Auth.sol\";\n\ncontract DSGuardEvents {\n event LogPermit(\n bytes32 indexed src,\n bytes32 indexed dst,\n bytes32 indexed sig\n );\n\n event LogForbid(\n bytes32 indexed src,\n bytes32 indexed dst,\n bytes32 indexed sig\n );\n}\n\ncontract DSGuard is DSAuth, DSAuthority, DSGuardEvents {\n bytes32 constant public ANY = bytes32(uint(-1));\n\n mapping (bytes32 => mapping (bytes32 => mapping (bytes32 => bool))) acl;\n\n function canCall(\n address src_, address dst_, bytes4 sig\n ) public view returns (bool) {\n bytes32 src = bytes32(bytes20(src_));\n bytes32 dst = bytes32(bytes20(dst_));\n\n return acl[src][dst][sig]\n || acl[src][dst][ANY]\n || acl[src][ANY][sig]\n || acl[src][ANY][ANY]\n || acl[ANY][dst][sig]\n || acl[ANY][dst][ANY]\n || acl[ANY][ANY][sig]\n || acl[ANY][ANY][ANY];\n }\n\n function permit(bytes32 src, bytes32 dst, bytes32 sig) public auth {\n acl[src][dst][sig] = true;\n emit LogPermit(src, dst, sig);\n }\n\n function forbid(bytes32 src, bytes32 dst, bytes32 sig) public auth {\n acl[src][dst][sig] = false;\n emit LogForbid(src, dst, sig);\n }\n\n function permit(address src, address dst, bytes32 sig) public {\n permit(bytes32(bytes20(src)), bytes32(bytes20(dst)), sig);\n }\n function forbid(address src, address dst, bytes32 sig) public {\n forbid(bytes32(bytes20(src)), bytes32(bytes20(dst)), sig);\n }\n\n}\n\ncontract DSGuardFactory {\n mapping (address => bool) public isGuard;\n\n function newGuard() public returns (DSGuard guard) {\n guard = new DSGuard();\n guard.setOwner(msg.sender);\n isGuard[address(guard)] = true;\n }\n}\n", @@ -3458,7 +3458,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "2495:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7110,7 +7110,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "2495:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7369,7 +7369,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.820Z", + "updatedAt": "2020-04-03T06:25:13.498Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSGuardFactory.json b/packages/smart-contracts/artifacts/DSGuardFactory.json index a9c02d1..522138f 100644 --- a/packages/smart-contracts/artifacts/DSGuardFactory.json +++ b/packages/smart-contracts/artifacts/DSGuardFactory.json @@ -38,11 +38,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isGuard\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"newGuard\",\"outputs\":[{\"internalType\":\"contract DSGuard\",\"name\":\"guard\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":\"DSGuardFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b506113b9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063489c12021461003b57806365688cc914610097575b600080fd5b61007d6004803603602081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100e1565b604051808215151515815260200191505060405180910390f35b61009f610101565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006020528060005260406000206000915054906101000a900460ff1681565b600060405161010f9061021f565b604051809103906000f08015801561012b573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff166313af4035336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101ad57600080fd5b505af11580156101c1573d6000803e3d6000fd5b5050505060016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555090565b6111588061022d8339019056fe608060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a26110c1806100976000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610225578063b700961314610243578063bf7e214f146102e8578063cbeea68c14610332578063f0217ce5146103a05761009e565b806313af4035146100a35780632bc3217d146100e757806379d88d87146101555780637a9e5e4b146101975780638da5cb5b146101db575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e2565b005b610153600480360360608110156100fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061052b565b005b6101956004803603606081101561016b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061055f565b005b6101d9600480360360208110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610681565b005b6101e36107c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61022d6107ee565b6040518082815260200191505060405180910390f35b6102ce6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610815565b604051808215151515815260200191505060405180910390f35b6102f0610cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039e6004803603606081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cdd565b005b6103e0600480360360608110156103b657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610d11565b005b610410336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b61055a8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff19168361055f565b505050565b61058d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b6105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282960405160405180910390a4505050565b6106af336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b6000808460601b6bffffffffffffffffffffffff1916905060008460601b6bffffffffffffffffffffffff191690506002600083815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1680610913575060026000838152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b8061099f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610a2f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610abb5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610b4b5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610bfa5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610cad5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b925050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d0c8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff191683610d11565b505050565b610d3f336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610db1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6001600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677160405160405180910390a4505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e725760019050611086565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed15760019050611086565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f305760009050611086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a72315820b36af45f5c962802069634aca499d531cac1aeed514356b0d518c59cf816ca6264736f6c63430005100032a265627a7a72315820d6ccd940a34df05dafa52f7ac464e1ab24ab9ff1abc8fa0695cd58194adda98164736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063489c12021461003b57806365688cc914610097575b600080fd5b61007d6004803603602081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100e1565b604051808215151515815260200191505060405180910390f35b61009f610101565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006020528060005260406000206000915054906101000a900460ff1681565b600060405161010f9061021f565b604051809103906000f08015801561012b573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff166313af4035336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101ad57600080fd5b505af11580156101c1573d6000803e3d6000fd5b5050505060016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555090565b6111588061022d8339019056fe608060405233600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a26110c1806100976000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610225578063b700961314610243578063bf7e214f146102e8578063cbeea68c14610332578063f0217ce5146103a05761009e565b806313af4035146100a35780632bc3217d146100e757806379d88d87146101555780637a9e5e4b146101975780638da5cb5b146101db575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e2565b005b610153600480360360608110156100fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061052b565b005b6101956004803603606081101561016b57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061055f565b005b6101d9600480360360208110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610681565b005b6101e36107c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61022d6107ee565b6040518082815260200191505060405180910390f35b6102ce6004803603606081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610815565b604051808215151515815260200191505060405180910390f35b6102f0610cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039e6004803603606081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cdd565b005b6103e0600480360360608110156103b657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610d11565b005b610410336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b61055a8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff19168361055f565b505050565b61058d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b6105ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6000600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282960405160405180910390a4505050565b6106af336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b6000808460601b6bffffffffffffffffffffffff1916905060008460601b6bffffffffffffffffffffffff191690506002600083815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1680610913575060026000838152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b8061099f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610a2f57506002600083815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610abb5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060008281526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610b4b5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8152602001908152602001600020600082815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b80610bfa5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81526020019081526020016000206000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff165b80610cad5750600260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b815260200190815260200160002060009054906101000a900460ff165b925050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d0c8360601b6bffffffffffffffffffffffff19168360601b6bffffffffffffffffffffffff191683610d11565b505050565b610d3f336000357fffffffff0000000000000000000000000000000000000000000000000000000016610e33565b610db1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b6001600260008581526020019081526020016000206000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508082847f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677160405160405180910390a4505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e725760019050611086565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ed15760019050611086565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f305760009050611086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a72315820b36af45f5c962802069634aca499d531cac1aeed514356b0d518c59cf816ca6264736f6c63430005100032a265627a7a72315820d6ccd940a34df05dafa52f7ac464e1ab24ab9ff1abc8fa0695cd58194adda98164736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isGuard\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"newGuard\",\"outputs\":[{\"internalType\":\"contract DSGuard\",\"name\":\"guard\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":\"DSGuardFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50610aaa806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063489c12021461003b57806365688cc914610075575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b0316610099565b604080519115158252519081900360200190f35b61007d6100ae565b604080516001600160a01b039092168252519081900360200190f35b60006020819052908152604090205460ff1681565b60006040516100bc90610162565b604051809103906000f0801580156100d8573d6000803e3d6000fd5b50604080516313af403560e01b815233600482015290519192506001600160a01b038316916313af40359160248082019260009290919082900301818387803b15801561012457600080fd5b505af1158015610138573d6000803e3d6000fd5b5050506001600160a01b0382166000908152602081905260409020805460ff191660011790555090565b610906806101708339019056fe60806040819052600180546001600160a01b03191633908117909155907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a26108b5806100516000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610174578063b70096131461018e578063bf7e214f146101e3578063cbeea68c146101eb578063f0217ce5146102215761009e565b806313af4035146100a35780632bc3217d146100cb57806379d88d87146101015780637a9e5e4b1461012a5780638da5cb5b14610150575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661024a565b005b6100c9600480360360608110156100e157600080fd5b506001600160a01b038135811691602081013590911690604001356102f8565b6100c96004803603606081101561011757600080fd5b5080359060208101359060400135610322565b6100c96004803603602081101561014057600080fd5b50356001600160a01b03166103d9565b610158610483565b604080516001600160a01b039092168252519081900360200190f35b61017c610492565b60408051918252519081900360200190f35b6101cf600480360360608110156101a457600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160e01b031916610498565b604080519115158252519081900360200190f35b6101586106ad565b6100c96004803603606081101561020157600080fd5b506001600160a01b038135811691602081013590911690604001356106bc565b6100c96004803603606081101561023757600080fd5b50803590602081013590604001356106dd565b610260336000356001600160e01b031916610797565b6102a8576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b61031d8360601b6001600160601b0319168360601b6001600160601b03191683610322565b505050565b610338336000356001600160e01b031916610797565b610380576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19169055518291849186917f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282991a4505050565b6103ef336000356001600160e01b031916610797565b610437576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b60001981565b6bffffffffffffffffffffffff19606084811b821660008181526002602090815260408083209488901b9095168083529381528482206001600160e01b03198716835290529283205490919060ff1680610515575060008281526002602090815260408083208484528252808320600019845290915290205460ff165b8061054d57506000828152600260209081526040808320600019845282528083206001600160e01b03198816845290915290205460ff165b80610578575060008281526002602090815260408083206000198452825280832090915290205460ff165b806105c5575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb602090815260408083206001600160e01b03198816845290915290205460ff165b8061060a575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb60209081526040808320600019845290915290205460ff165b8061064d57506001600160e01b0319841660009081527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d97602052604090205460ff165b806106a357506000196000527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d976020527ff423d1317b37667cd26005728bffa7c8b0499e133951fcf8e814d4fc5f4c98f65460ff165b9695505050505050565b6000546001600160a01b031681565b61031d8360601b6001600160601b0319168360601b6001600160601b031916835b6106f3336000356001600160e01b031916610797565b61073b576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19166001179055518291849186917f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677191a4505050565b60006001600160a01b0383163014156107b25750600161087a565b6001546001600160a01b03848116911614156107d05750600161087a565b6000546001600160a01b03166107e85750600061087a565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561084b57600080fd5b505afa15801561085f573d6000803e3d6000fd5b505050506040513d602081101561087557600080fd5b505190505b9291505056fea265627a7a7231582002f13cb32032449838808dd8f202e7345ece3907f6e1ea30707f04c2b7b30b2764736f6c63430005100032a265627a7a72315820d678cbdfcf20396599f1aaece9d90f67e09d88474e21bc810c1c6f4bd1f40fc964736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063489c12021461003b57806365688cc914610075575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b0316610099565b604080519115158252519081900360200190f35b61007d6100ae565b604080516001600160a01b039092168252519081900360200190f35b60006020819052908152604090205460ff1681565b60006040516100bc90610162565b604051809103906000f0801580156100d8573d6000803e3d6000fd5b50604080516313af403560e01b815233600482015290519192506001600160a01b038316916313af40359160248082019260009290919082900301818387803b15801561012457600080fd5b505af1158015610138573d6000803e3d6000fd5b5050506001600160a01b0382166000908152602081905260409020805460ff191660011790555090565b610906806101708339019056fe60806040819052600180546001600160a01b03191633908117909155907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a26108b5806100516000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a8542f6611610066578063a8542f6614610174578063b70096131461018e578063bf7e214f146101e3578063cbeea68c146101eb578063f0217ce5146102215761009e565b806313af4035146100a35780632bc3217d146100cb57806379d88d87146101015780637a9e5e4b1461012a5780638da5cb5b14610150575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661024a565b005b6100c9600480360360608110156100e157600080fd5b506001600160a01b038135811691602081013590911690604001356102f8565b6100c96004803603606081101561011757600080fd5b5080359060208101359060400135610322565b6100c96004803603602081101561014057600080fd5b50356001600160a01b03166103d9565b610158610483565b604080516001600160a01b039092168252519081900360200190f35b61017c610492565b60408051918252519081900360200190f35b6101cf600480360360608110156101a457600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160e01b031916610498565b604080519115158252519081900360200190f35b6101586106ad565b6100c96004803603606081101561020157600080fd5b506001600160a01b038135811691602081013590911690604001356106bc565b6100c96004803603606081101561023757600080fd5b50803590602081013590604001356106dd565b610260336000356001600160e01b031916610797565b6102a8576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b61031d8360601b6001600160601b0319168360601b6001600160601b03191683610322565b505050565b610338336000356001600160e01b031916610797565b610380576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19169055518291849186917f95ba64c95d85e67ac83a0476c4a62ac2cf8ab2d0407545b8c9d79c3eefa6282991a4505050565b6103ef336000356001600160e01b031916610797565b610437576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b60001981565b6bffffffffffffffffffffffff19606084811b821660008181526002602090815260408083209488901b9095168083529381528482206001600160e01b03198716835290529283205490919060ff1680610515575060008281526002602090815260408083208484528252808320600019845290915290205460ff165b8061054d57506000828152600260209081526040808320600019845282528083206001600160e01b03198816845290915290205460ff165b80610578575060008281526002602090815260408083206000198452825280832090915290205460ff165b806105c5575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb602090815260408083206001600160e01b03198816845290915290205460ff165b8061060a575060008181527f38b5b2ceac7637132d27514ffcf440b705287635075af7b8bd5adcaa6a4cc5bb60209081526040808320600019845290915290205460ff165b8061064d57506001600160e01b0319841660009081527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d97602052604090205460ff165b806106a357506000196000527f47fa60fbc027ac3984ea309688a33182f4193c478b40ba8d294eb2cd3ddc4d976020527ff423d1317b37667cd26005728bffa7c8b0499e133951fcf8e814d4fc5f4c98f65460ff165b9695505050505050565b6000546001600160a01b031681565b61031d8360601b6001600160601b0319168360601b6001600160601b031916835b6106f3336000356001600160e01b031916610797565b61073b576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b60008381526002602090815260408083208584528252808320848452909152808220805460ff19166001179055518291849186917f6f50375045128971c5469d343039ba7b8e30a5b190453737b28bda6f7a30677191a4505050565b60006001600160a01b0383163014156107b25750600161087a565b6001546001600160a01b03848116911614156107d05750600161087a565b6000546001600160a01b03166107e85750600061087a565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561084b57600080fd5b505afa15801561085f573d6000803e3d6000fd5b505050506040513d602081101561087557600080fd5b505190505b9291505056fea265627a7a7231582002f13cb32032449838808dd8f202e7345ece3907f6e1ea30707f04c2b7b30b2764736f6c63430005100032a265627a7a72315820d678cbdfcf20396599f1aaece9d90f67e09d88474e21bc810c1c6f4bd1f40fc964736f6c63430005100032", "sourceMap": "2309:246:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2309:246:18;;;;;;;", - "deployedSourceMap": "2309:246:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2309:246:18;;;;;;;;;;;;;;;;;;;;;;;;2339:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2339:42:18;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2388:165;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2339:42;;;;;;;;;;;;;;;;;;;;;;:::o;2388:165::-;2424:13;2457;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2457:13:18;2449:21;;2480:5;:14;;;2495:10;2480:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2480:26:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2480:26:18;;;;2542:4;2516:7;:23;2532:5;2516:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;2388:165;:::o;2309:246::-;;;;;;;;:::o", + "deployedSourceMap": "2309:246:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2309:246:18;;;;;;;;;;;;;;;;;;;;;;;;2339:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2339:42:18;-1:-1:-1;;;;;2339:42:18;;:::i;:::-;;;;;;;;;;;;;;;;;;2388:165;;;:::i;:::-;;;;-1:-1:-1;;;;;2388:165:18;;;;;;;;;;;;;;2339:42;;;;;;;;;;;;;;;;:::o;2388:165::-;2424:13;2457;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2480:26:18;;;-1:-1:-1;;;2480:26:18;;2495:10;2480:26;;;;;;2449:21;;-1:-1:-1;;;;;;2480:14:18;;;-1:-1:-1;;2480:26:18;;;;;-1:-1:-1;;2480:26:18;;;;;;;;-1:-1:-1;2480:14:18;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;2480:26:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;2516:23:18;;:7;:23;;;;;;;;;;:30;;-1:-1:-1;;2516:30:18;-1:-1:-1;2516:30:18;;;:23;2388:165::o;2309:246::-;;;;;;;;:::o", "source": "// guard.sol -- simple whitelist implementation of DSAuthority\n\n// Copyright (C) 2017 DappHub, LLC\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity 0.5.16;\n\nimport \"./Auth.sol\";\n\ncontract DSGuardEvents {\n event LogPermit(\n bytes32 indexed src,\n bytes32 indexed dst,\n bytes32 indexed sig\n );\n\n event LogForbid(\n bytes32 indexed src,\n bytes32 indexed dst,\n bytes32 indexed sig\n );\n}\n\ncontract DSGuard is DSAuth, DSAuthority, DSGuardEvents {\n bytes32 constant public ANY = bytes32(uint(-1));\n\n mapping (bytes32 => mapping (bytes32 => mapping (bytes32 => bool))) acl;\n\n function canCall(\n address src_, address dst_, bytes4 sig\n ) public view returns (bool) {\n bytes32 src = bytes32(bytes20(src_));\n bytes32 dst = bytes32(bytes20(dst_));\n\n return acl[src][dst][sig]\n || acl[src][dst][ANY]\n || acl[src][ANY][sig]\n || acl[src][ANY][ANY]\n || acl[ANY][dst][sig]\n || acl[ANY][dst][ANY]\n || acl[ANY][ANY][sig]\n || acl[ANY][ANY][ANY];\n }\n\n function permit(bytes32 src, bytes32 dst, bytes32 sig) public auth {\n acl[src][dst][sig] = true;\n emit LogPermit(src, dst, sig);\n }\n\n function forbid(bytes32 src, bytes32 dst, bytes32 sig) public auth {\n acl[src][dst][sig] = false;\n emit LogForbid(src, dst, sig);\n }\n\n function permit(address src, address dst, bytes32 sig) public {\n permit(bytes32(bytes20(src)), bytes32(bytes20(dst)), sig);\n }\n function forbid(address src, address dst, bytes32 sig) public {\n forbid(bytes32(bytes20(src)), bytes32(bytes20(dst)), sig);\n }\n\n}\n\ncontract DSGuardFactory {\n mapping (address => bool) public isGuard;\n\n function newGuard() public returns (DSGuard guard) {\n guard = new DSGuard();\n guard.setOwner(msg.sender);\n isGuard[address(guard)] = true;\n }\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol", "ast": { @@ -3444,7 +3444,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "2495:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7096,7 +7096,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "2495:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -7355,7 +7355,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.828Z", + "updatedAt": "2020-04-03T06:25:13.501Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSMath.json b/packages/smart-contracts/artifacts/DSMath.json index 5cfe99f..2bb0fad 100644 --- a/packages/smart-contracts/artifacts/DSMath.json +++ b/packages/smart-contracts/artifacts/DSMath.json @@ -1,9 +1,9 @@ { "contractName": "DSMath", "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Math.sol\":\"DSMath\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Math.sol\":{\"keccak256\":\"0x076e4e69e3c310c9db584ed185b9ddb146119efe1b5956eb70f4a0ec3dba2ee9\",\"urls\":[\"bzz-raw://e2f332571cfb85e631178dcf54d643bd4d75700300fad26837c2fa174136d18d\",\"dweb:/ipfs/QmX7KetuVanvGwC5mM5S7MQcmsXjG1UnEmq3XWSZqEiqHG\"]}},\"version\":1}", - "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582018a4c984f7720e0b45a0e91cd73f11663a83f8647346b4010f0f5827c9c01c1b64736f6c63430005100032", - "deployedBytecode": "0x6080604052600080fdfea265627a7a7231582018a4c984f7720e0b45a0e91cd73f11663a83f8647346b4010f0f5827c9c01c1b64736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Math.sol\":\"DSMath\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Math.sol\":{\"keccak256\":\"0x076e4e69e3c310c9db584ed185b9ddb146119efe1b5956eb70f4a0ec3dba2ee9\",\"urls\":[\"bzz-raw://e2f332571cfb85e631178dcf54d643bd4d75700300fad26837c2fa174136d18d\",\"dweb:/ipfs/QmX7KetuVanvGwC5mM5S7MQcmsXjG1UnEmq3XWSZqEiqHG\"]}},\"version\":1}", + "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820dbcb061dd7217fe50fbabe3d052f31a66262e682a0994d6df36b5b83c10660a864736f6c63430005100032", + "deployedBytecode": "0x6080604052600080fdfea265627a7a72315820dbcb061dd7217fe50fbabe3d052f31a66262e682a0994d6df36b5b83c10660a864736f6c63430005100032", "sourceMap": "722:2186:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;722:2186:19;;;;;;;", "deployedSourceMap": "722:2186:19:-;;;;;", "source": "/// math.sol -- mixin for inline numerical wizardry\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >0.4.13;\n\ncontract DSMath {\n function add(uint x, uint y) internal pure returns (uint z) {\n require((z = x + y) >= x, \"ds-math-add-overflow\");\n }\n function sub(uint x, uint y) internal pure returns (uint z) {\n require((z = x - y) <= x, \"ds-math-sub-underflow\");\n }\n function mul(uint x, uint y) internal pure returns (uint z) {\n require(y == 0 || (z = x * y) / y == x, \"ds-math-mul-overflow\");\n }\n\n function min(uint x, uint y) internal pure returns (uint z) {\n return x <= y ? x : y;\n }\n function max(uint x, uint y) internal pure returns (uint z) {\n return x >= y ? x : y;\n }\n function imin(int x, int y) internal pure returns (int z) {\n return x <= y ? x : y;\n }\n function imax(int x, int y) internal pure returns (int z) {\n return x >= y ? x : y;\n }\n\n uint constant WAD = 10 ** 18;\n uint constant RAY = 10 ** 27;\n\n function wmul(uint x, uint y) internal pure returns (uint z) {\n z = add(mul(x, y), WAD / 2) / WAD;\n }\n function rmul(uint x, uint y) internal pure returns (uint z) {\n z = add(mul(x, y), RAY / 2) / RAY;\n }\n function wdiv(uint x, uint y) internal pure returns (uint z) {\n z = add(mul(x, WAD), y / 2) / y;\n }\n function rdiv(uint x, uint y) internal pure returns (uint z) {\n z = add(mul(x, RAY), y / 2) / y;\n }\n\n // This famous algorithm is called \"exponentiation by squaring\"\n // and calculates x^n with x as fixed-point and n as regular unsigned.\n //\n // It's O(log n), instead of O(n) for naive repeated multiplication.\n //\n // These facts are why it works:\n //\n // If n is even, then x^n = (x^2)^(n/2).\n // If n is odd, then x^n = x * x^(n-1),\n // and applying the equation for even x gives\n // x^n = x * (x^2)^((n-1) / 2).\n //\n // Also, EVM division is flooring and\n // floor[(n-1) / 2] = floor[n / 2].\n //\n function rpow(uint x, uint n) internal pure returns (uint z) {\n z = n % 2 != 0 ? x : RAY;\n\n for (n /= 2; n != 0; n /= 2) {\n x = rmul(x, x);\n\n if (n % 2 != 0) {\n z = rmul(z, x);\n }\n }\n }\n}", @@ -208,10 +208,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "814:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -509,10 +509,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "945:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -911,10 +911,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1077:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4300,10 +4300,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "814:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4601,10 +4601,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "945:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5003,10 +5003,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1077:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -8198,7 +8198,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.832Z", + "updatedAt": "2020-04-03T06:25:13.510Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSNote.json b/packages/smart-contracts/artifacts/DSNote.json index d11b9e7..ebad282 100644 --- a/packages/smart-contracts/artifacts/DSNote.json +++ b/packages/smart-contracts/artifacts/DSNote.json @@ -45,9 +45,9 @@ "type": "event" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"foo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"bar\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"fax\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":\"DSNote\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]}},\"version\":1}", - "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820fa29f2e2df0ef8ad1caa462e937ba8cdde6e604fe4800d2c5efd3d5a208e013364736f6c63430005100032", - "deployedBytecode": "0x6080604052600080fdfea265627a7a72315820fa29f2e2df0ef8ad1caa462e937ba8cdde6e604fe4800d2c5efd3d5a208e013364736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"foo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"bar\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"fax\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":\"DSNote\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]}},\"version\":1}", + "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582081591acd0a0632d9b8d61b61e3f496e7dc43f1b27d19dbf987445b16c576a1fb64736f6c63430005100032", + "deployedBytecode": "0x6080604052600080fdfea265627a7a7231582081591acd0a0632d9b8d61b61e3f496e7dc43f1b27d19dbf987445b16c576a1fb64736f6c63430005100032", "sourceMap": "734:541:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;734:541:20;;;;;;;", "deployedSourceMap": "734:541:20:-;;;;;", "source": "/// note.sol -- the `note' modifier, for logging calls as events\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity 0.5.16;\n\ncontract DSNote {\n event LogNote(\n bytes4 indexed sig,\n address indexed guy,\n bytes32 indexed foo,\n bytes32 indexed bar,\n uint256 wad,\n bytes fax\n ) anonymous;\n\n modifier note {\n bytes32 foo;\n bytes32 bar;\n uint256 wad;\n\n assembly {\n foo := calldataload(4)\n bar := calldataload(36)\n wad := callvalue\n }\n\n emit LogNote(msg.sig, msg.sender, foo, bar, wad, msg.data);\n\n _;\n }\n}", @@ -427,7 +427,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1209:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -456,7 +456,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1218:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -524,7 +524,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1245:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1004,7 +1004,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1209:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1033,7 +1033,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1218:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1101,7 +1101,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "1245:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1212,7 +1212,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.835Z", + "updatedAt": "2020-04-03T06:25:13.515Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSProxy.json b/packages/smart-contracts/artifacts/DSProxy.json index add6101..5e7a423 100644 --- a/packages/smart-contracts/artifacts/DSProxy.json +++ b/packages/smart-contracts/artifacts/DSProxy.json @@ -241,11 +241,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"foo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"bar\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"fax\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"name\":\"setCache\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":\"DSProxy\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b506040516200183238038062001832833981810160405260208110156200003757600080fd5b810190808051906020019092919050505033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a2620000dd81620000e560201b60201c565b50506200059d565b60006200011d336000357fffffffff00000000000000000000000000000000000000000000000000000000166200033b60201b60201c565b62000190576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f64732d70726f78792d63616368652d616464726573732d72657175697265640081525060200191505060405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156200037c576001905062000597565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003dd576001905062000597565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156200043e576000905062000597565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b1580156200055757600080fd5b505afa1580156200056c573d6000803e3d6000fd5b505050506040513d60208110156200058357600080fd5b810190808051906020019092919050505090505b92915050565b61128580620005ad6000396000f3fe60806040526004361061007b5760003560e01c80637a9e5e4b1161004e5780637a9e5e4b146104775780638da5cb5b146104c8578063948f50761461051f578063bf7e214f146105885761007b565b806313af40351461007d5780631cff79cd146100ce5780631f6a1eb91461022257806360c7d29514610420575b005b34801561008957600080fd5b506100cc600480360360208110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105df565b005b6101a7600480360360408110156100e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561012157600080fd5b82018360208201111561013357600080fd5b8035906020019184600183028401116401000000008311171561015557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610728565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e75780820151818401526020810190506101cc565b50505050905090810190601f1680156102145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103726004803603604081101561023857600080fd5b810190808035906020019064010000000081111561025557600080fd5b82018360208201111561026757600080fd5b8035906020019184600183028401116401000000008311171561028957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156102ec57600080fd5b8201836020820111156102fe57600080fd5b8035906020019184600183028401116401000000008311171561032057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061097a565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103e45780820151818401526020810190506103c9565b50505050905090810190601f1680156104115780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561042c57600080fd5b50610435610bf3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048357600080fd5b506104c66004803603602081101561049a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c19565b005b3480156104d457600080fd5b506104dd610d60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052b57600080fd5b5061056e6004803603602081101561054257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d86565b604051808215151515815260200191505060405180910390f35b34801561059457600080fd5b5061059d610fd2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b61067f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b6060610758336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b6107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610927576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f64732d70726f78792d7461726765742d616464726573732d726571756972656481525060200191505060405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146109675761096e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a0c5780820151818401526020810190506109f1565b50505050905090810190601f168015610a395780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d6020811015610a8057600080fd5b81019080805190602001909291905050509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610be057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b56578082015181840152602081019050610b3b565b50505050905090810190601f168015610b835780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b505050506040513d6020811015610bcc57600080fd5b810190808051906020019092919050505091505b610bea8284610728565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c47336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b610cb9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610db6336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b610e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f64732d70726f78792d63616368652d616464726573732d72657175697265640081525060200191505060405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611036576001905061124a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611095576001905061124a565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110f4576000905061124a565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561120c57600080fd5b505afa158015611220573d6000803e3d6000fd5b505050506040513d602081101561123657600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a723158208655b1a975b68d38aeb6a9e4a15d18a80434547f2309818844fdbc305caca16064736f6c63430005100032", - "deployedBytecode": "0x60806040526004361061007b5760003560e01c80637a9e5e4b1161004e5780637a9e5e4b146104775780638da5cb5b146104c8578063948f50761461051f578063bf7e214f146105885761007b565b806313af40351461007d5780631cff79cd146100ce5780631f6a1eb91461022257806360c7d29514610420575b005b34801561008957600080fd5b506100cc600480360360208110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105df565b005b6101a7600480360360408110156100e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561012157600080fd5b82018360208201111561013357600080fd5b8035906020019184600183028401116401000000008311171561015557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610728565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e75780820151818401526020810190506101cc565b50505050905090810190601f1680156102145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103726004803603604081101561023857600080fd5b810190808035906020019064010000000081111561025557600080fd5b82018360208201111561026757600080fd5b8035906020019184600183028401116401000000008311171561028957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156102ec57600080fd5b8201836020820111156102fe57600080fd5b8035906020019184600183028401116401000000008311171561032057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061097a565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103e45780820151818401526020810190506103c9565b50505050905090810190601f1680156104115780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561042c57600080fd5b50610435610bf3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048357600080fd5b506104c66004803603602081101561049a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c19565b005b3480156104d457600080fd5b506104dd610d60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052b57600080fd5b5061056e6004803603602081101561054257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d86565b604051808215151515815260200191505060405180910390f35b34801561059457600080fd5b5061059d610fd2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b61067f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b6060610758336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b6107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610927576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f64732d70726f78792d7461726765742d616464726573732d726571756972656481525060200191505060405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146109675761096e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a0c5780820151818401526020810190506109f1565b50505050905090810190601f168015610a395780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d6020811015610a8057600080fd5b81019080805190602001909291905050509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610be057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b56578082015181840152602081019050610b3b565b50505050905090810190601f168015610b835780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b505050506040513d6020811015610bcc57600080fd5b810190808051906020019092919050505091505b610bea8284610728565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c47336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b610cb9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610db6336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b610e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f64732d70726f78792d63616368652d616464726573732d72657175697265640081525060200191505060405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611036576001905061124a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611095576001905061124a565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110f4576000905061124a565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561120c57600080fd5b505afa158015611220573d6000803e3d6000fd5b505050506040513d602081101561123657600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a723158208655b1a975b68d38aeb6a9e4a15d18a80434547f2309818844fdbc305caca16064736f6c63430005100032", - "sourceMap": "1068:1822:21:-;;;1172:76;8:9:-1;5:2;;;30:1;27;20:12;5:2;1172:76:21;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1172:76:21;;;;;;;;;;;;;;;;1074:10:17;1066:5;;:18;;;;;;;;;;;;;;;;;;1111:10;1099:23;;;;;;;;;;;;1221:20:21;1230:10;1221:8;;;:20;;:::i;:::-;;1172:76;1068:1822;;2614:274;2710:4;1476:33:17;1489:10;1501:7;;;;1476:12;;;:33;;:::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1201:53:20;;;;;;;;;;;;;;;2760:1:21;2738:24;;:10;:24;;;;2730:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2829:10;2808:5;;:32;;;;;;;;;;;;;;;;;;2877:4;2870:11;;1544:1:17;;;2614:274:21;;;:::o;1558:375:17:-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1874:42:17;;;;;;;;;;;;;;;;1867:49;;1558:375;;;;;:::o;1068:1822:21:-;;;;;;;", - "deployedSourceMap": "1068:1822:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1135:130:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1135:130:17;;;;;;;;;;;;;;;;;;;:::i;:::-;;1748:840:21;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1748:840:21;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1748:840:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1748:840:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1748:840:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1748:840:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1748:840:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1360:382;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1360:382:21;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1360:382:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1360:382:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1360:382:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1360:382:21;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1360:382:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1360:382:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1360:382:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1360:382:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1360:382:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1109:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1109:25:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1271:167:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1271:167:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1271:167:17;;;;;;;;;;;;;;;;;;;:::i;:::-;;1002:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1002:26:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2614:274:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2614:274:21;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2614:274:21;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;966:30:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:30:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1135:130;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1219:6;1211:5;;:14;;;;;;;;;;;;;;;;;;1252:5;;;;;;;;;;;1240:18;;;;;;;;;;;;1135:130;:::o;1748:840:21:-;1876:21;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1201:53:20;;;;;;;;;;;;;;;1940:1:21;1921:21;;:7;:21;;;;1913:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2147:1;2144;2136:5;2130:12;2123:4;2116:5;2112:16;2103:7;2096:4;2091:3;2087:14;2074:75;2174:14;2220:4;2214:11;2202:23;;2301:4;2297:9;2290:4;2283;2277;2273:15;2269:26;2265:42;2255:8;2251:57;2245:4;2238:71;2339:4;2329:8;2322:22;2396:4;2393:1;2386:4;2376:8;2372:19;2357:44;2429:9;2422:17;2457:1;2452:120;;;;2415:157;;2452:120;2553:4;2546;2536:8;2532:19;2525:33;2415:157;;2043:539;;1544:1:17;;;1748:840:21;;;;:::o;1360:382::-;1465:14;1481:21;1527:5;;;;;;;;;;;:10;;;1538:5;1527:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1527:17:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:17:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1527:17:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1527:17:21;;;;;;;;;;;;;;;;1518:26;;1576:1;1558:20;;:6;:20;;;1554:138;;;1663:5;;;;;;;;;;;:11;;;1675:5;1663:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1663:18:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1663:18:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1663:18:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1663:18:21;;;;;;;;;;;;;;;;1654:27;;1554:138;1713:22;1721:6;1729:5;1713:7;:22::i;:::-;1702:33;;1360:382;;;;;:::o;1109:25::-;;;;;;;;;;;;;:::o;1271:167:17:-;1476:33;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1371:10;1359:9;;:22;;;;;;;;;;;;;;;;;;1420:9;;;;;;;;;;;1396:35;;;;;;;;;;;;1271:167;:::o;1002:26::-;;;;;;;;;;;;;:::o;2614:274:21:-;2710:4;1476:33:17;1489:10;1501:7;;;;1476:12;:33::i;:::-;1468:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:11:20;1023;1044;1109:1;1096:15;1089:22;;1144:2;1131:16;1124:23;;1167:9;1160:16;;1235:3;1230;1218:10;1201:53;;1209:7;;;;1201:53;;;1240:3;1245:8;;1201:53;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1201:53:20;;;;;;;;;;;;;;;2760:1:21;2738:24;;:10;:24;;;;2730:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2829:10;2808:5;;:32;;;;;;;;;;;;;;;;;;2877:4;2870:11;;1544:1:17;;;2614:274:21;;;:::o;966:30:17:-;;;;;;;;;;;;;:::o;1558:375::-;1628:4;1663;1648:20;;:3;:20;;;1644:283;;;1691:4;1684:11;;;;1644:283;1723:5;;;;;;;;;;;1716:12;;:3;:12;;;1712:215;;;1751:4;1744:11;;;;1712:215;1806:1;1776:32;;1784:9;;;;;;;;;;;1776:32;;;1772:155;;;1831:5;1824:12;;;;1772:155;1874:9;;;;;;;;;;;:17;;;1892:3;1905:4;1912:3;1874:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1874:42:17;;;;;;;;;;;;;;;;1867:49;;1558:375;;;;;:::o", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"sig\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"foo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"bar\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"fax\",\"type\":\"bytes\"}],\"name\":\"LogNote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authority\",\"type\":\"address\"}],\"name\":\"LogSetAuthority\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"LogSetOwner\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"authority\",\"outputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract DSAuthority\",\"name\":\"authority_\",\"type\":\"address\"}],\"name\":\"setAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_cacheAddr\",\"type\":\"address\"}],\"name\":\"setCache\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":\"DSProxy\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50604051610f18380380610f188339818101604052602081101561003357600080fd5b5051600180546001600160a01b031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a2610085816001600160e01b0361008c16565b5050610363565b60006100c4337fffffffff000000000000000000000000000000000000000000000000000000008335166001600160e01b0361024916565b61012f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d617574682d756e617574686f72697a6564000000000000000000000000604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080357fffffffff000000000000000000000000000000000000000000000000000000001693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b03851661022057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f64732d70726f78792d63616368652d616464726573732d726571756972656400604482015290519081900360640190fd5b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b60006001600160a01b0383163014156102645750600161035d565b6001546001600160a01b03848116911614156102825750600161035d565b6000546001600160a01b031661029a5750600061035d565b600054604080517fb70096130000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301523060248301527fffffffff00000000000000000000000000000000000000000000000000000000861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561032e57600080fd5b505afa158015610342573d6000803e3d6000fd5b505050506040513d602081101561035857600080fd5b505190505b92915050565b610ba6806103726000396000f3fe60806040526004361061007b5760003560e01c80637a9e5e4b1161004e5780637a9e5e4b146103ca5780638da5cb5b146103fd578063948f507614610412578063bf7e214f146104595761007b565b806313af40351461007d5780631cff79cd146100b05780631f6a1eb9146101db57806360c7d29514610399575b005b34801561008957600080fd5b5061007b600480360360208110156100a057600080fd5b50356001600160a01b031661046e565b610166600480360360408110156100c657600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061051c945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a0578181015183820152602001610188565b50505050905090810190601f1680156101cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610308600480360360408110156101f157600080fd5b81019060208101813564010000000081111561020c57600080fd5b82018360208201111561021e57600080fd5b8035906020019184600183028401116401000000008311171561024057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561029357600080fd5b8201836020820111156102a557600080fd5b803590602001918460018302840111640100000000831117156102c757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061068e945050505050565b60405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561035d578181015183820152602001610345565b50505050905090810190601f16801561038a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156103a557600080fd5b506103ae610869565b604080516001600160a01b039092168252519081900360200190f35b3480156103d657600080fd5b5061007b600480360360208110156103ed57600080fd5b50356001600160a01b0316610878565b34801561040957600080fd5b506103ae610922565b34801561041e57600080fd5b506104456004803603602081101561043557600080fd5b50356001600160a01b0316610931565b604080519115158252519081900360200190f35b34801561046557600080fd5b506103ae610a79565b610484336000356001600160e01b031916610a88565b6104cc576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6060610534336000356001600160e01b031916610a88565b61057c576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b03861661063b576040805162461bcd60e51b815260206004820181905260248201527f64732d70726f78792d7461726765742d616464726573732d7265717569726564604482015290519081900360640190fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e81156001811461067b57610682565b8160208801fd5b50505050505092915050565b6002546040516322fd145760e21b81526020600482018181528551602484015285516000946060946001600160a01b0390911693638bf4515c93899390928392604490910191908501908083838c5b838110156106f55781810151838201526020016106dd565b50505050905090810190601f1680156107225780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561073f57600080fd5b505afa158015610753573d6000803e3d6000fd5b505050506040513d602081101561076957600080fd5b505191506001600160a01b03821661085657600254604051633f6861d960e11b81526020600482018181528751602484015287516001600160a01b0390941693637ed0c3b293899383926044909201919085019080838360005b838110156107db5781810151838201526020016107c3565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506040513d602081101561085157600080fd5b505191505b610860828461051c565b90509250929050565b6002546001600160a01b031681565b61088e336000356001600160e01b031916610a88565b6108d6576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000610949336000356001600160e01b031916610a88565b610991576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b038516610a50576040805162461bcd60e51b815260206004820152601f60248201527f64732d70726f78792d63616368652d616464726573732d726571756972656400604482015290519081900360640190fd5b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b6000546001600160a01b031681565b60006001600160a01b038316301415610aa357506001610b6b565b6001546001600160a01b0384811691161415610ac157506001610b6b565b6000546001600160a01b0316610ad957506000610b6b565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b158015610b3c57600080fd5b505afa158015610b50573d6000803e3d6000fd5b505050506040513d6020811015610b6657600080fd5b505190505b9291505056fea265627a7a7231582021153570f7bcbf26d5c67d9d9e2b9182817ae10949efed687aa7bebf95053a7b64736f6c63430005100032", + "deployedBytecode": "0x60806040526004361061007b5760003560e01c80637a9e5e4b1161004e5780637a9e5e4b146103ca5780638da5cb5b146103fd578063948f507614610412578063bf7e214f146104595761007b565b806313af40351461007d5780631cff79cd146100b05780631f6a1eb9146101db57806360c7d29514610399575b005b34801561008957600080fd5b5061007b600480360360208110156100a057600080fd5b50356001600160a01b031661046e565b610166600480360360408110156100c657600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061051c945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a0578181015183820152602001610188565b50505050905090810190601f1680156101cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610308600480360360408110156101f157600080fd5b81019060208101813564010000000081111561020c57600080fd5b82018360208201111561021e57600080fd5b8035906020019184600183028401116401000000008311171561024057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561029357600080fd5b8201836020820111156102a557600080fd5b803590602001918460018302840111640100000000831117156102c757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061068e945050505050565b60405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561035d578181015183820152602001610345565b50505050905090810190601f16801561038a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156103a557600080fd5b506103ae610869565b604080516001600160a01b039092168252519081900360200190f35b3480156103d657600080fd5b5061007b600480360360208110156103ed57600080fd5b50356001600160a01b0316610878565b34801561040957600080fd5b506103ae610922565b34801561041e57600080fd5b506104456004803603602081101561043557600080fd5b50356001600160a01b0316610931565b604080519115158252519081900360200190f35b34801561046557600080fd5b506103ae610a79565b610484336000356001600160e01b031916610a88565b6104cc576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6060610534336000356001600160e01b031916610a88565b61057c576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b03861661063b576040805162461bcd60e51b815260206004820181905260248201527f64732d70726f78792d7461726765742d616464726573732d7265717569726564604482015290519081900360640190fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e81156001811461067b57610682565b8160208801fd5b50505050505092915050565b6002546040516322fd145760e21b81526020600482018181528551602484015285516000946060946001600160a01b0390911693638bf4515c93899390928392604490910191908501908083838c5b838110156106f55781810151838201526020016106dd565b50505050905090810190601f1680156107225780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561073f57600080fd5b505afa158015610753573d6000803e3d6000fd5b505050506040513d602081101561076957600080fd5b505191506001600160a01b03821661085657600254604051633f6861d960e11b81526020600482018181528751602484015287516001600160a01b0390941693637ed0c3b293899383926044909201919085019080838360005b838110156107db5781810151838201526020016107c3565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506040513d602081101561085157600080fd5b505191505b610860828461051c565b90509250929050565b6002546001600160a01b031681565b61088e336000356001600160e01b031916610a88565b6108d6576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000610949336000356001600160e01b031916610a88565b610991576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b038516610a50576040805162461bcd60e51b815260206004820152601f60248201527f64732d70726f78792d63616368652d616464726573732d726571756972656400604482015290519081900360640190fd5b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b6000546001600160a01b031681565b60006001600160a01b038316301415610aa357506001610b6b565b6001546001600160a01b0384811691161415610ac157506001610b6b565b6000546001600160a01b0316610ad957506000610b6b565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b158015610b3c57600080fd5b505afa158015610b50573d6000803e3d6000fd5b505050506040513d6020811015610b6657600080fd5b505190505b9291505056fea265627a7a7231582021153570f7bcbf26d5c67d9d9e2b9182817ae10949efed687aa7bebf95053a7b64736f6c63430005100032", + "sourceMap": "1068:1822:21:-;;;1172:76;8:9:-1;5:2;;;30:1;27;20:12;5:2;1172:76:21;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1172:76:21;1066:5:17;:18;;-1:-1:-1;;;;;;1066:18:17;1074:10;1066:18;;;;;;1099:23;;;;-1:-1:-1;;1099:23:17;1221:20:21;1230:10;1221:8;:20::i;:::-;;1172:76;1068:1822;;2614:274;2710:4;1476:33:17;1489:10;1501:7;;-1:-1:-1;;;;;;1501:7:17;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1201:53:20;;;1167:9;1201:53;;;;;;;;;1245:8;1201:53;;;;;;1109:1;1096:15;;1144:2;1131:16;;;;1096:15;;1218:10;;-1:-1:-1;1209:7:20;;-1:-1:-1;;;;;;1209:7:20;;1167:9;;-1:-1:-1;;1201:53:20;;;;-1:-1:-1;1245:8:20;;-1:-1:-1;1201:53:20;1:33:-1;99:1;81:16;;;74:27;1201:53:20;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;1201:53:20;;;;-1:-1:-1;1201:53:20;;-1:-1:-1;;;;;1201:53:20;-1:-1:-1;;;;;2738:24:21;;2730:68;;;;;-1:-1:-1;;;2730:68:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:5:21;:32;;-1:-1:-1;;;;;;2808:32:21;-1:-1:-1;;;;;2808:32:21;;;;;;;;;;;-1:-1:-1;;;2614:274:21;-1:-1:-1;2614:274:21:o;1558:375:17:-;1628:4;1663;-1:-1:-1;;;;;1648:20:17;;;1644:283;;;-1:-1:-1;1691:4:17;1684:11;;1644:283;1723:5;;-1:-1:-1;;;;;1716:12:17;;;1723:5;;1716:12;1712:215;;;-1:-1:-1;1751:4:17;1744:11;;1712:215;1806:1;1784:9;-1:-1:-1;;;;;1784:9:17;1772:155;;-1:-1:-1;1831:5:17;1824:12;;1772:155;1874:9;;:42;;;-1:-1:-1;;;1874:42:17;;-1:-1:-1;;;;;1874:42:17;;;;;;;1905:4;1874:42;;;;-1:-1:-1;;;;;;1874:42:17;;;;;;;;:9;;;;;:17;;:42;;;;;;;;;;;;;;:9;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1874:42:17;;-1:-1:-1;1772:155:17;1558:375;;;;:::o;1068:1822:21:-;;;;;;;", + "deployedSourceMap": "1068:1822:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1135:130:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1135:130:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1135:130:17;-1:-1:-1;;;;;1135:130:17;;:::i;1748:840:21:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1748:840:21;;-1:-1:-1;;;;;1748:840:21;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1748:840:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1748:840:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1748:840:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1748:840:21;;-1:-1:-1;1748:840:21;;-1:-1:-1;;;;;1748:840:21:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1748:840:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1360:382;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1360:382:21;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1360:382:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1360:382:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1360:382:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1360:382:21;;;;;;;;-1:-1:-1;1360:382:21;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;1360:382:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1360:382:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1360:382:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1360:382:21;;-1:-1:-1;1360:382:21;;-1:-1:-1;;;;;1360:382:21:i;:::-;;;;-1:-1:-1;;;;;1360:382:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1360:382:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1109:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1109:25:21;;;:::i;:::-;;;;-1:-1:-1;;;;;1109:25:21;;;;;;;;;;;;;;1271:167:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1271:167:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1271:167:17;-1:-1:-1;;;;;1271:167:17;;:::i;1002:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1002:26:17;;;:::i;2614:274:21:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2614:274:21;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2614:274:21;-1:-1:-1;;;;;2614:274:21;;:::i;:::-;;;;;;;;;;;;;;;;;;966:30:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:30:17;;;:::i;1135:130::-;1476:33;1489:10;-1:-1:-1;;;;;;1501:7:17;;;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1211:5;:14;;-1:-1:-1;;;;;;1211:14:17;-1:-1:-1;;;;;1211:14:17;;;;;;;;;;;1240:18;;1252:5;;;1240:18;;-1:-1:-1;;1240:18:17;1135:130;:::o;1748:840:21:-;1876:21;1476:33:17;1489:10;-1:-1:-1;;;;;;1501:7:17;;;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1201:53:20;;;1167:9;1201:53;;;;;;;;;1245:8;1201:53;;;;;;1109:1;1096:15;;1144:2;1131:16;;;;1096:15;;1218:10;;-1:-1:-1;1209:7:20;;-1:-1:-1;;;;;;1209:7:20;;1167:9;;-1:-1:-1;;1201:53:20;;;;-1:-1:-1;1245:8:20;;-1:-1:-1;1201:53:20;1:33:-1;99:1;81:16;;;74:27;1201:53:20;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;1201:53:20;;;;-1:-1:-1;1201:53:20;;-1:-1:-1;;;;;1201:53:20;-1:-1:-1;;;;;1921:21:21;;1913:66;;;;;-1:-1:-1;;;1913:66:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2147:1;2144;2136:5;2130:12;2123:4;2116:5;2112:16;2103:7;2096:4;2091:3;2087:14;2074:75;2174:14;2220:4;2214:11;2202:23;;2301:4;2297:9;2290:4;2283;2277;2273:15;2269:26;2265:42;2255:8;2251:57;2245:4;2238:71;2339:4;2329:8;2322:22;2396:4;2393:1;2386:4;2376:8;2372:19;2357:44;2429:9;2422:17;2457:1;2452:120;;;;2415:157;;2452:120;2553:4;2546;2536:8;2532:19;2525:33;2415:157;;2043:539;;1544:1:17;;;1748:840:21;;;;:::o;1360:382::-;1527:5;;:17;;-1:-1:-1;;;1527:17:21;;;;;;;;;;;;;;;;;-1:-1:-1;;1481:21:21;;-1:-1:-1;;;;;1527:5:21;;;;:10;;:17;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1527:17:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:17:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1527:17:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1527:17:21;;-1:-1:-1;;;;;;1558:20:21;;1554:138;;1663:5;;:18;;-1:-1:-1;;;1663:18:21;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1663:5:21;;;;:11;;:18;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1663:18:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1663:18:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1663:18:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1663:18:21;;-1:-1:-1;1554:138:21;1713:22;1721:6;1729:5;1713:7;:22::i;:::-;1702:33;;1360:382;;;;;:::o;1109:25::-;;;-1:-1:-1;;;;;1109:25:21;;:::o;1271:167:17:-;1476:33;1489:10;-1:-1:-1;;;;;;1501:7:17;;;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1359:9;:22;;-1:-1:-1;;;;;;1359:22:17;-1:-1:-1;;;;;1359:22:17;;;;;;;;;;1396:35;;1420:9;;;1396:35;;;1271:167;:::o;1002:26::-;;;-1:-1:-1;;;;;1002:26:17;;:::o;2614:274:21:-;2710:4;1476:33:17;1489:10;-1:-1:-1;;;;;;1501:7:17;;;1476:12;:33::i;:::-;1468:66;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;-1:-1:-1;;;1468:66:17;;;;;;;;;;;;;;;1201:53:20;;;1167:9;1201:53;;;;;;;;;1245:8;1201:53;;;;;;1109:1;1096:15;;1144:2;1131:16;;;;1096:15;;1218:10;;-1:-1:-1;1209:7:20;;-1:-1:-1;;;;;;1209:7:20;;1167:9;;-1:-1:-1;;1201:53:20;;;;-1:-1:-1;1245:8:20;;-1:-1:-1;1201:53:20;1:33:-1;99:1;81:16;;;74:27;1201:53:20;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;1201:53:20;;;;-1:-1:-1;1201:53:20;;-1:-1:-1;;;;;1201:53:20;-1:-1:-1;;;;;2738:24:21;;2730:68;;;;;-1:-1:-1;;;2730:68:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:5:21;:32;;-1:-1:-1;;;;;;2808:32:21;-1:-1:-1;;;;;2808:32:21;;;;;;;;;;;-1:-1:-1;;;2614:274:21;-1:-1:-1;2614:274:21:o;966:30:17:-;;;-1:-1:-1;;;;;966:30:17;;:::o;1558:375::-;1628:4;1663;-1:-1:-1;;;;;1648:20:17;;;1644:283;;;-1:-1:-1;1691:4:17;1684:11;;1644:283;1723:5;;-1:-1:-1;;;;;1716:12:17;;;1723:5;;1716:12;1712:215;;;-1:-1:-1;1751:4:17;1744:11;;1712:215;1806:1;1784:9;-1:-1:-1;;;;;1784:9:17;1772:155;;-1:-1:-1;1831:5:17;1824:12;;1772:155;1874:9;;:42;;;-1:-1:-1;;;1874:42:17;;-1:-1:-1;;;;;1874:42:17;;;;;;;1905:4;1874:42;;;;-1:-1:-1;;;;;;1874:42:17;;;;;;;;:9;;;;;-1:-1:-1;;1874:42:17;;;;;;;;;;;;;;:9;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;1874:42:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1874:42:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1874:42:17;;-1:-1:-1;1772:155:17;1558:375;;;;:::o", "source": "// proxy.sol - execute actions atomically through the proxy's identity\n\n// Copyright (C) 2017 DappHub, LLC\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.5.0 <0.6.0;\n\nimport \"./Auth.sol\";\nimport \"./Note.sol\";\n\n// DSProxy\n// Allows code execution using a persistant identity This can be very\n// useful to execute a sequence of atomic actions. Since the owner of\n// the proxy can be changed, this allows for dynamic ownership models\n// i.e. a multisig\ncontract DSProxy is DSAuth, DSNote {\n DSProxyCache public cache; // global cache for contracts\n\n constructor(address _cacheAddr) public {\n setCache(_cacheAddr);\n }\n\n function() external payable {\n }\n\n // use the proxy to execute calldata _data on contract _code\n function execute(bytes memory _code, bytes memory _data)\n public\n payable\n returns (address target, bytes memory response)\n {\n target = cache.read(_code);\n if (target == address(0)) {\n // deploy contract & store its address in cache\n target = cache.write(_code);\n }\n\n response = execute(target, _data);\n }\n\n function execute(address _target, bytes memory _data)\n public\n auth\n note\n payable\n returns (bytes memory response)\n {\n require(_target != address(0), \"ds-proxy-target-address-required\");\n\n // call contract in current context\n assembly {\n let succeeded := delegatecall(sub(gas, 5000), _target, add(_data, 0x20), mload(_data), 0, 0)\n let size := returndatasize\n\n response := mload(0x40)\n mstore(0x40, add(response, and(add(add(size, 0x20), 0x1f), not(0x1f))))\n mstore(response, size)\n returndatacopy(add(response, 0x20), 0, size)\n\n switch iszero(succeeded)\n case 1 {\n // throw if delegatecall failed\n revert(add(response, 0x20), size)\n }\n }\n }\n\n //set new cache\n function setCache(address _cacheAddr)\n public\n auth\n note\n returns (bool)\n {\n require(_cacheAddr != address(0), \"ds-proxy-cache-address-required\");\n cache = DSProxyCache(_cacheAddr); // overwrite cache\n return true;\n }\n}\n\n// DSProxyFactory\n// This factory deploys new proxy instances through build()\n// Deployed proxy addresses are logged\ncontract DSProxyFactory {\n event Created(address indexed sender, address indexed owner, address proxy, address cache);\n mapping(address=>address) public proxies;\n DSProxyCache public cache;\n\n constructor() public {\n cache = new DSProxyCache();\n }\n\n // deploys a new proxy instance\n // sets owner of proxy to caller\n function build() public returns (address payable proxy) {\n proxy = build(msg.sender);\n }\n\n // deploys a new proxy instance\n // sets custom owner of proxy\n function build(address owner) public returns (address payable proxy) {\n proxy = address(new DSProxy(address(cache)));\n emit Created(msg.sender, owner, address(proxy), address(cache));\n DSProxy(proxy).setOwner(owner);\n proxies[owner] = proxy;\n }\n}\n\n// DSProxyCache\n// This global cache stores addresses of contracts previously deployed\n// by a proxy. This saves gas from repeat deployment of the same\n// contracts and eliminates blockchain bloat.\n\n// By default, all proxies deployed from the same factory store\n// contracts in the same cache. The cache a proxy instance uses can be\n// changed. The cache uses the sha3 hash of a contract's bytecode to\n// lookup the address\ncontract DSProxyCache {\n mapping(bytes32 => address) cache;\n\n function read(bytes memory _code) public view returns (address) {\n bytes32 hash = keccak256(_code);\n return cache[hash];\n }\n\n function write(bytes memory _code) public returns (address target) {\n assembly {\n target := create(0, add(_code, 0x20), mload(_code))\n switch iszero(extcodesize(target))\n case 1 {\n // throw if contract failed to deploy\n revert(0, 0)\n }\n }\n bytes32 hash = keccak256(_code);\n cache[hash] = target;\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol", "ast": { @@ -1203,10 +1203,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1913:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1590,10 +1590,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2730:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2215,7 +2215,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3436:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2526,7 +2526,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3676:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -3103,7 +3103,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4392:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -3366,7 +3366,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4799:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -4507,10 +4507,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1913:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4894,10 +4894,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2730:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5519,7 +5519,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3436:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -5830,7 +5830,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3676:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -6407,7 +6407,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4392:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -6670,7 +6670,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4799:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -6862,7 +6862,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.835Z", + "updatedAt": "2020-04-03T06:25:13.516Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSProxyCache.json b/packages/smart-contracts/artifacts/DSProxyCache.json index f1988bc..0b49b80 100644 --- a/packages/smart-contracts/artifacts/DSProxyCache.json +++ b/packages/smart-contracts/artifacts/DSProxyCache.json @@ -44,11 +44,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"read\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"write\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":\"DSProxyCache\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50610334806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c14610136575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610231565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ef6004803603602081101561014c57600080fd5b810190808035906020019064010000000081111561016957600080fd5b82018360208201111561017b57600080fd5b8035906020019184600183028401116401000000008311171561019d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008151602083016000f09050803b156001811461024e57610253565b600080fd5b506000828051906020012090508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000808280519060200120905060008082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505091905056fea265627a7a723158205c680b90a403d8f037d25bb23ad3d42a182a729375fb7624c7649d88b0d8024d64736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c14610136575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610231565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ef6004803603602081101561014c57600080fd5b810190808035906020019064010000000081111561016957600080fd5b82018360208201111561017b57600080fd5b8035906020019184600183028401116401000000008311171561019d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008151602083016000f09050803b156001811461024e57610253565b600080fd5b506000828051906020012090508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000808280519060200120905060008082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505091905056fea265627a7a723158205c680b90a403d8f037d25bb23ad3d42a182a729375fb7624c7649d88b0d8024d64736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"read\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_code\",\"type\":\"bytes\"}],\"name\":\"write\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":\"DSProxyCache\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c146100fd575b600080fd5b6100e16004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101a3945050505050565b604080516001600160a01b039092168252519081900360200190f35b6100e16004803603602081101561011357600080fd5b81019060208101813564010000000081111561012e57600080fd5b82018360208201111561014057600080fd5b8035906020019184600183028401116401000000008311171561016257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101ee945050505050565b60008151602083016000f09050803b156001811461003657508151602092830120600090815291829052604090912080546001600160a01b0319166001600160a01b03831617905590565b805160209182012060009081529081905260409020546001600160a01b03169056fea265627a7a72315820a463b0981db8e6a179d563cefded0ff7df019aaf804d14d24bb7b25be7d3dd6f64736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c146100fd575b600080fd5b6100e16004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101a3945050505050565b604080516001600160a01b039092168252519081900360200190f35b6100e16004803603602081101561011357600080fd5b81019060208101813564010000000081111561012e57600080fd5b82018360208201111561014057600080fd5b8035906020019184600183028401116401000000008311171561016257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101ee945050505050565b60008151602083016000f09050803b156001811461003657508151602092830120600090815291829052604090912080546001600160a01b0319166001600160a01b03831617905590565b805160209182012060009081529081905260409020546001600160a01b03169056fea265627a7a72315820a463b0981db8e6a179d563cefded0ff7df019aaf804d14d24bb7b25be7d3dd6f64736f6c63430005100032", "sourceMap": "4235:619:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4235:619:21;;;;;;;", - "deployedSourceMap": "4235:619:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4235:619:21;;;;;;;;;;;;;;;;;;;;;;;;4449:403;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4449:403:21;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4449:403:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4449:403:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4449:403:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4449:403:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4303:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4303:140:21;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4303:140:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4303:140:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4303:140:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4303:140:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4449:403;4500:14;4593:5;4587:12;4580:4;4573:5;4569:16;4566:1;4559:41;4549:51;;4639:6;4627:19;4620:27;4665:1;4660:105;;;;4613:152;;4660:105;4749:1;4746;4739:12;4613:152;;4784:12;4809:5;4799:16;;;;;;4784:31;;4839:6;4825:5;:11;4831:4;4825:11;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4449:403;;;;:::o;4303:140::-;4358:7;4377:12;4402:5;4392:16;;;;;;4377:31;;4425:5;:11;4431:4;4425:11;;;;;;;;;;;;;;;;;;;;;4418:18;;;4303:140;;;:::o", + "deployedSourceMap": "4235:619:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4235:619:21;;;;;;;;;;;;;;;;;;;;;;;;4449:403;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4449:403:21;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4449:403:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4449:403:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4449:403:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4449:403:21;;-1:-1:-1;4449:403:21;;-1:-1:-1;;;;;4449:403:21:i;:::-;;;;-1:-1:-1;;;;;4449:403:21;;;;;;;;;;;;;;4303:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4303:140:21;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4303:140:21;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4303:140:21;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4303:140:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4303:140:21;;-1:-1:-1;4303:140:21;;-1:-1:-1;;;;;4303:140:21:i;4449:403::-;4500:14;4593:5;4587:12;4580:4;4573:5;4569:16;4566:1;4559:41;4549:51;;4639:6;4627:19;4620:27;4665:1;4660:105;;;;-1:-1:-1;4799:16:21;;;;;;;4784:12;4825:11;;;;;;;;;;;:20;;-1:-1:-1;;;;;;4825:20:21;-1:-1:-1;;;;;4825:20:21;;;;;:11;4449:403::o;4303:140::-;4392:16;;;;;;;4358:7;4425:11;;;;;;;;;;;-1:-1:-1;;;;;4425:11:21;;4303:140::o", "source": "// proxy.sol - execute actions atomically through the proxy's identity\n\n// Copyright (C) 2017 DappHub, LLC\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.5.0 <0.6.0;\n\nimport \"./Auth.sol\";\nimport \"./Note.sol\";\n\n// DSProxy\n// Allows code execution using a persistant identity This can be very\n// useful to execute a sequence of atomic actions. Since the owner of\n// the proxy can be changed, this allows for dynamic ownership models\n// i.e. a multisig\ncontract DSProxy is DSAuth, DSNote {\n DSProxyCache public cache; // global cache for contracts\n\n constructor(address _cacheAddr) public {\n setCache(_cacheAddr);\n }\n\n function() external payable {\n }\n\n // use the proxy to execute calldata _data on contract _code\n function execute(bytes memory _code, bytes memory _data)\n public\n payable\n returns (address target, bytes memory response)\n {\n target = cache.read(_code);\n if (target == address(0)) {\n // deploy contract & store its address in cache\n target = cache.write(_code);\n }\n\n response = execute(target, _data);\n }\n\n function execute(address _target, bytes memory _data)\n public\n auth\n note\n payable\n returns (bytes memory response)\n {\n require(_target != address(0), \"ds-proxy-target-address-required\");\n\n // call contract in current context\n assembly {\n let succeeded := delegatecall(sub(gas, 5000), _target, add(_data, 0x20), mload(_data), 0, 0)\n let size := returndatasize\n\n response := mload(0x40)\n mstore(0x40, add(response, and(add(add(size, 0x20), 0x1f), not(0x1f))))\n mstore(response, size)\n returndatacopy(add(response, 0x20), 0, size)\n\n switch iszero(succeeded)\n case 1 {\n // throw if delegatecall failed\n revert(add(response, 0x20), size)\n }\n }\n }\n\n //set new cache\n function setCache(address _cacheAddr)\n public\n auth\n note\n returns (bool)\n {\n require(_cacheAddr != address(0), \"ds-proxy-cache-address-required\");\n cache = DSProxyCache(_cacheAddr); // overwrite cache\n return true;\n }\n}\n\n// DSProxyFactory\n// This factory deploys new proxy instances through build()\n// Deployed proxy addresses are logged\ncontract DSProxyFactory {\n event Created(address indexed sender, address indexed owner, address proxy, address cache);\n mapping(address=>address) public proxies;\n DSProxyCache public cache;\n\n constructor() public {\n cache = new DSProxyCache();\n }\n\n // deploys a new proxy instance\n // sets owner of proxy to caller\n function build() public returns (address payable proxy) {\n proxy = build(msg.sender);\n }\n\n // deploys a new proxy instance\n // sets custom owner of proxy\n function build(address owner) public returns (address payable proxy) {\n proxy = address(new DSProxy(address(cache)));\n emit Created(msg.sender, owner, address(proxy), address(cache));\n DSProxy(proxy).setOwner(owner);\n proxies[owner] = proxy;\n }\n}\n\n// DSProxyCache\n// This global cache stores addresses of contracts previously deployed\n// by a proxy. This saves gas from repeat deployment of the same\n// contracts and eliminates blockchain bloat.\n\n// By default, all proxies deployed from the same factory store\n// contracts in the same cache. The cache a proxy instance uses can be\n// changed. The cache uses the sha3 hash of a contract's bytecode to\n// lookup the address\ncontract DSProxyCache {\n mapping(bytes32 => address) cache;\n\n function read(bytes memory _code) public view returns (address) {\n bytes32 hash = keccak256(_code);\n return cache[hash];\n }\n\n function write(bytes memory _code) public returns (address target) {\n assembly {\n target := create(0, add(_code, 0x20), mload(_code))\n switch iszero(extcodesize(target))\n case 1 {\n // throw if contract failed to deploy\n revert(0, 0)\n }\n }\n bytes32 hash = keccak256(_code);\n cache[hash] = target;\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol", "ast": { @@ -1006,10 +1006,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1913:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1393,10 +1393,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2730:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2018,7 +2018,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3436:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2329,7 +2329,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3676:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2906,7 +2906,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4392:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -3169,7 +3169,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4799:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -4310,10 +4310,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1913:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4697,10 +4697,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2730:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5322,7 +5322,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3436:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -5633,7 +5633,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3676:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -6210,7 +6210,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4392:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -6473,7 +6473,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4799:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -6665,7 +6665,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.838Z", + "updatedAt": "2020-04-03T06:25:13.521Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DSProxyFactory.json b/packages/smart-contracts/artifacts/DSProxyFactory.json index 235158b..c78bf07 100644 --- a/packages/smart-contracts/artifacts/DSProxyFactory.json +++ b/packages/smart-contracts/artifacts/DSProxyFactory.json @@ -111,11 +111,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cache\",\"type\":\"address\"}],\"name\":\"Created\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"proxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"proxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"proxies\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":\"DSProxyFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b5060405161001d9061007f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008c565b61035480611deb83390190565b611d508061009b6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806360c7d295146100515780638e1a55fc1461009b578063c4552791146100e5578063f3701da214610169575b600080fd5b6100596101ed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a3610213565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610127600480360360208110156100fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610223565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ab6004803603602081101561017f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610256565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061021e33610256565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610287906104dc565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156102d9573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a38073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561044257600080fd5b505af1158015610456573d6000803e3d6000fd5b50505050806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b611832806104ea8339019056fe60806040523480156200001157600080fd5b506040516200183238038062001832833981810160405260208110156200003757600080fd5b810190808051906020019092919050505033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a2620000dd81620000e560201b60201c565b50506200059d565b60006200011d336000357fffffffff00000000000000000000000000000000000000000000000000000000166200033b60201b60201c565b62000190576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f64732d70726f78792d63616368652d616464726573732d72657175697265640081525060200191505060405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156200037c576001905062000597565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003dd576001905062000597565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156200043e576000905062000597565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b1580156200055757600080fd5b505afa1580156200056c573d6000803e3d6000fd5b505050506040513d60208110156200058357600080fd5b810190808051906020019092919050505090505b92915050565b61128580620005ad6000396000f3fe60806040526004361061007b5760003560e01c80637a9e5e4b1161004e5780637a9e5e4b146104775780638da5cb5b146104c8578063948f50761461051f578063bf7e214f146105885761007b565b806313af40351461007d5780631cff79cd146100ce5780631f6a1eb91461022257806360c7d29514610420575b005b34801561008957600080fd5b506100cc600480360360208110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105df565b005b6101a7600480360360408110156100e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561012157600080fd5b82018360208201111561013357600080fd5b8035906020019184600183028401116401000000008311171561015557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610728565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e75780820151818401526020810190506101cc565b50505050905090810190601f1680156102145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103726004803603604081101561023857600080fd5b810190808035906020019064010000000081111561025557600080fd5b82018360208201111561026757600080fd5b8035906020019184600183028401116401000000008311171561028957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156102ec57600080fd5b8201836020820111156102fe57600080fd5b8035906020019184600183028401116401000000008311171561032057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061097a565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103e45780820151818401526020810190506103c9565b50505050905090810190601f1680156104115780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561042c57600080fd5b50610435610bf3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048357600080fd5b506104c66004803603602081101561049a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c19565b005b3480156104d457600080fd5b506104dd610d60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052b57600080fd5b5061056e6004803603602081101561054257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d86565b604051808215151515815260200191505060405180910390f35b34801561059457600080fd5b5061059d610fd2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b61067f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b6060610758336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b6107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610927576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f64732d70726f78792d7461726765742d616464726573732d726571756972656481525060200191505060405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146109675761096e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a0c5780820151818401526020810190506109f1565b50505050905090810190601f168015610a395780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d6020811015610a8057600080fd5b81019080805190602001909291905050509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610be057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b56578082015181840152602081019050610b3b565b50505050905090810190601f168015610b835780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b505050506040513d6020811015610bcc57600080fd5b810190808051906020019092919050505091505b610bea8284610728565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c47336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b610cb9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610db6336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b610e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f64732d70726f78792d63616368652d616464726573732d72657175697265640081525060200191505060405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611036576001905061124a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611095576001905061124a565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110f4576000905061124a565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561120c57600080fd5b505afa158015611220573d6000803e3d6000fd5b505050506040513d602081101561123657600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a723158208655b1a975b68d38aeb6a9e4a15d18a80434547f2309818844fdbc305caca16064736f6c63430005100032a265627a7a723158202c15ac00824c2d2548ef8460c423be2fb08dfb52e1bb3dbfbc7cf735c1ff2a4e64736f6c63430005100032608060405234801561001057600080fd5b50610334806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c14610136575b600080fd5b6100f46004803603602081101561005157600080fd5b810190808035906020019064010000000081111561006e57600080fd5b82018360208201111561008057600080fd5b803590602001918460018302840111640100000000831117156100a257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610231565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ef6004803603602081101561014c57600080fd5b810190808035906020019064010000000081111561016957600080fd5b82018360208201111561017b57600080fd5b8035906020019184600183028401116401000000008311171561019d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008151602083016000f09050803b156001811461024e57610253565b600080fd5b506000828051906020012090508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000808280519060200120905060008082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505091905056fea265627a7a723158205c680b90a403d8f037d25bb23ad3d42a182a729375fb7624c7649d88b0d8024d64736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806360c7d295146100515780638e1a55fc1461009b578063c4552791146100e5578063f3701da214610169575b600080fd5b6100596101ed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100a3610213565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610127600480360360208110156100fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610223565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ab6004803603602081101561017f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610256565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061021e33610256565b905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610287906104dc565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156102d9573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a38073ffffffffffffffffffffffffffffffffffffffff166313af4035836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561044257600080fd5b505af1158015610456573d6000803e3d6000fd5b50505050806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b611832806104ea8339019056fe60806040523480156200001157600080fd5b506040516200183238038062001832833981810160405260208110156200003757600080fd5b810190808051906020019092919050505033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a2620000dd81620000e560201b60201c565b50506200059d565b60006200011d336000357fffffffff00000000000000000000000000000000000000000000000000000000166200033b60201b60201c565b62000190576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f64732d70726f78792d63616368652d616464726573732d72657175697265640081525060200191505060405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156200037c576001905062000597565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620003dd576001905062000597565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156200043e576000905062000597565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b1580156200055757600080fd5b505afa1580156200056c573d6000803e3d6000fd5b505050506040513d60208110156200058357600080fd5b810190808051906020019092919050505090505b92915050565b61128580620005ad6000396000f3fe60806040526004361061007b5760003560e01c80637a9e5e4b1161004e5780637a9e5e4b146104775780638da5cb5b146104c8578063948f50761461051f578063bf7e214f146105885761007b565b806313af40351461007d5780631cff79cd146100ce5780631f6a1eb91461022257806360c7d29514610420575b005b34801561008957600080fd5b506100cc600480360360208110156100a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105df565b005b6101a7600480360360408110156100e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561012157600080fd5b82018360208201111561013357600080fd5b8035906020019184600183028401116401000000008311171561015557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610728565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e75780820151818401526020810190506101cc565b50505050905090810190601f1680156102145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103726004803603604081101561023857600080fd5b810190808035906020019064010000000081111561025557600080fd5b82018360208201111561026757600080fd5b8035906020019184600183028401116401000000008311171561028957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156102ec57600080fd5b8201836020820111156102fe57600080fd5b8035906020019184600183028401116401000000008311171561032057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061097a565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103e45780820151818401526020810190506103c9565b50505050905090810190601f1680156104115780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561042c57600080fd5b50610435610bf3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048357600080fd5b506104c66004803603602081101561049a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c19565b005b3480156104d457600080fd5b506104dd610d60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052b57600080fd5b5061056e6004803603602081101561054257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d86565b604051808215151515815260200191505060405180910390f35b34801561059457600080fd5b5061059d610fd2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61060d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b61067f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b6060610758336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b6107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610927576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f64732d70726f78792d7461726765742d616464726573732d726571756972656481525060200191505060405180910390fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e8115600181146109675761096e565b8160208801fd5b50505050505092915050565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf4515c856040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a0c5780820151818401526020810190506109f1565b50505050905090810190601f168015610a395780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d6020811015610a8057600080fd5b81019080805190602001909291905050509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610be057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ed0c3b2856040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b56578082015181840152602081019050610b3b565b50505050905090810190601f168015610b835780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b505050506040513d6020811015610bcc57600080fd5b810190808051906020019092919050505091505b610bea8284610728565b90509250929050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c47336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b610cb9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610db6336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ff7565b610e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d617574682d756e617574686f72697a656400000000000000000000000081525060200191505060405180910390fd5b60008060006004359250602435915034905081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a4600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f64732d70726f78792d63616368652d616464726573732d72657175697265640081525060200191505060405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611036576001905061124a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611095576001905061124a565b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110f4576000905061124a565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001935050505060206040518083038186803b15801561120c57600080fd5b505afa158015611220573d6000803e3d6000fd5b505050506040513d602081101561123657600080fd5b810190808051906020019092919050505090505b9291505056fea265627a7a723158208655b1a975b68d38aeb6a9e4a15d18a80434547f2309818844fdbc305caca16064736f6c63430005100032a265627a7a723158202c15ac00824c2d2548ef8460c423be2fb08dfb52e1bb3dbfbc7cf735c1ff2a4e64736f6c63430005100032", - "sourceMap": "3009:798:21:-;;;3213:64;8:9:-1;5:2;;;30:1;27;20:12;5:2;3213:64:21;3252:18;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3252:18:21;3244:5;;:26;;;;;;;;;;;;;;;;;;3009:798;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "3009:798:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3009:798:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3181:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3356:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3135:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3135:40:21;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3530:275;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3530:275:21;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3181:25;;;;;;;;;;;;;:::o;3356:98::-;3389:21;3430:17;3436:10;3430:5;:17::i;:::-;3422:25;;3356:98;:::o;3135:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;3530:275::-;3576:21;3645:5;;;;;;;;;;;3625:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3625:27:21;3609:44;;3688:5;3668:58;;3676:10;3668:58;;;3703:5;3719;;;;;;;;;;;3668:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3744:5;3736:23;;;3760:5;3736:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3736:30:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3736:30:21;;;;3793:5;3776:7;:14;3784:5;3776:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;3530:275;;;:::o;3009:798::-;;;;;;;;:::o", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"cache\",\"type\":\"address\"}],\"name\":\"Created\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"proxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"build\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"proxy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cache\",\"outputs\":[{\"internalType\":\"contract DSProxyCache\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"proxies\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":\"DSProxyFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5060405161001d9061005f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039290921691909117905561006c565b6102658061121483390190565b6111998061007b6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806360c7d295146100515780638e1a55fc14610075578063c45527911461007d578063f3701da2146100a3575b600080fd5b6100596100c9565b604080516001600160a01b039092168252519081900360200190f35b6100596100d8565b6100596004803603602081101561009357600080fd5b50356001600160a01b03166100e8565b610059600480360360208110156100b957600080fd5b50356001600160a01b0316610103565b6001546001600160a01b031681565b60006100e333610103565b905090565b6000602081905290815260409020546001600160a01b031681565b6001546040516000916001600160a01b03169061011f9061023f565b6001600160a01b03909116815260405190819003602001906000f08015801561014c573d6000803e3d6000fd5b50600154604080516001600160a01b038085168252928316602082015281519394509185169233927f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b92908290030190a3806001600160a01b03166313af4035836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156101f557600080fd5b505af1158015610209573d6000803e3d6000fd5b505050506001600160a01b03918216600090815260208190526040902080546001600160a01b0319169282169290921790915590565b610f188061024d8339019056fe608060405234801561001057600080fd5b50604051610f18380380610f188339818101604052602081101561003357600080fd5b5051600180546001600160a01b031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a2610085816001600160e01b0361008c16565b5050610363565b60006100c4337fffffffff000000000000000000000000000000000000000000000000000000008335166001600160e01b0361024916565b61012f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d617574682d756e617574686f72697a6564000000000000000000000000604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080357fffffffff000000000000000000000000000000000000000000000000000000001693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b03851661022057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f64732d70726f78792d63616368652d616464726573732d726571756972656400604482015290519081900360640190fd5b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b60006001600160a01b0383163014156102645750600161035d565b6001546001600160a01b03848116911614156102825750600161035d565b6000546001600160a01b031661029a5750600061035d565b600054604080517fb70096130000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301523060248301527fffffffff00000000000000000000000000000000000000000000000000000000861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561032e57600080fd5b505afa158015610342573d6000803e3d6000fd5b505050506040513d602081101561035857600080fd5b505190505b92915050565b610ba6806103726000396000f3fe60806040526004361061007b5760003560e01c80637a9e5e4b1161004e5780637a9e5e4b146103ca5780638da5cb5b146103fd578063948f507614610412578063bf7e214f146104595761007b565b806313af40351461007d5780631cff79cd146100b05780631f6a1eb9146101db57806360c7d29514610399575b005b34801561008957600080fd5b5061007b600480360360208110156100a057600080fd5b50356001600160a01b031661046e565b610166600480360360408110156100c657600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061051c945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a0578181015183820152602001610188565b50505050905090810190601f1680156101cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610308600480360360408110156101f157600080fd5b81019060208101813564010000000081111561020c57600080fd5b82018360208201111561021e57600080fd5b8035906020019184600183028401116401000000008311171561024057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561029357600080fd5b8201836020820111156102a557600080fd5b803590602001918460018302840111640100000000831117156102c757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061068e945050505050565b60405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561035d578181015183820152602001610345565b50505050905090810190601f16801561038a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156103a557600080fd5b506103ae610869565b604080516001600160a01b039092168252519081900360200190f35b3480156103d657600080fd5b5061007b600480360360208110156103ed57600080fd5b50356001600160a01b0316610878565b34801561040957600080fd5b506103ae610922565b34801561041e57600080fd5b506104456004803603602081101561043557600080fd5b50356001600160a01b0316610931565b604080519115158252519081900360200190f35b34801561046557600080fd5b506103ae610a79565b610484336000356001600160e01b031916610a88565b6104cc576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6060610534336000356001600160e01b031916610a88565b61057c576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b03861661063b576040805162461bcd60e51b815260206004820181905260248201527f64732d70726f78792d7461726765742d616464726573732d7265717569726564604482015290519081900360640190fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e81156001811461067b57610682565b8160208801fd5b50505050505092915050565b6002546040516322fd145760e21b81526020600482018181528551602484015285516000946060946001600160a01b0390911693638bf4515c93899390928392604490910191908501908083838c5b838110156106f55781810151838201526020016106dd565b50505050905090810190601f1680156107225780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561073f57600080fd5b505afa158015610753573d6000803e3d6000fd5b505050506040513d602081101561076957600080fd5b505191506001600160a01b03821661085657600254604051633f6861d960e11b81526020600482018181528751602484015287516001600160a01b0390941693637ed0c3b293899383926044909201919085019080838360005b838110156107db5781810151838201526020016107c3565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506040513d602081101561085157600080fd5b505191505b610860828461051c565b90509250929050565b6002546001600160a01b031681565b61088e336000356001600160e01b031916610a88565b6108d6576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000610949336000356001600160e01b031916610a88565b610991576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b038516610a50576040805162461bcd60e51b815260206004820152601f60248201527f64732d70726f78792d63616368652d616464726573732d726571756972656400604482015290519081900360640190fd5b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b6000546001600160a01b031681565b60006001600160a01b038316301415610aa357506001610b6b565b6001546001600160a01b0384811691161415610ac157506001610b6b565b6000546001600160a01b0316610ad957506000610b6b565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b158015610b3c57600080fd5b505afa158015610b50573d6000803e3d6000fd5b505050506040513d6020811015610b6657600080fd5b505190505b9291505056fea265627a7a7231582021153570f7bcbf26d5c67d9d9e2b9182817ae10949efed687aa7bebf95053a7b64736f6c63430005100032a265627a7a7231582062f69d81b372e2b2e0dcec49d218f27ef0075fc8248680321681affb8a1791fb64736f6c63430005100032608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80637ed0c3b21461003b5780638bf4515c146100fd575b600080fd5b6100e16004803603602081101561005157600080fd5b81019060208101813564010000000081111561006c57600080fd5b82018360208201111561007e57600080fd5b803590602001918460018302840111640100000000831117156100a057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101a3945050505050565b604080516001600160a01b039092168252519081900360200190f35b6100e16004803603602081101561011357600080fd5b81019060208101813564010000000081111561012e57600080fd5b82018360208201111561014057600080fd5b8035906020019184600183028401116401000000008311171561016257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101ee945050505050565b60008151602083016000f09050803b156001811461003657508151602092830120600090815291829052604090912080546001600160a01b0319166001600160a01b03831617905590565b805160209182012060009081529081905260409020546001600160a01b03169056fea265627a7a72315820a463b0981db8e6a179d563cefded0ff7df019aaf804d14d24bb7b25be7d3dd6f64736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806360c7d295146100515780638e1a55fc14610075578063c45527911461007d578063f3701da2146100a3575b600080fd5b6100596100c9565b604080516001600160a01b039092168252519081900360200190f35b6100596100d8565b6100596004803603602081101561009357600080fd5b50356001600160a01b03166100e8565b610059600480360360208110156100b957600080fd5b50356001600160a01b0316610103565b6001546001600160a01b031681565b60006100e333610103565b905090565b6000602081905290815260409020546001600160a01b031681565b6001546040516000916001600160a01b03169061011f9061023f565b6001600160a01b03909116815260405190819003602001906000f08015801561014c573d6000803e3d6000fd5b50600154604080516001600160a01b038085168252928316602082015281519394509185169233927f259b30ca39885c6d801a0b5dbc988640f3c25e2f37531fe138c5c5af8955d41b92908290030190a3806001600160a01b03166313af4035836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156101f557600080fd5b505af1158015610209573d6000803e3d6000fd5b505050506001600160a01b03918216600090815260208190526040902080546001600160a01b0319169282169290921790915590565b610f188061024d8339019056fe608060405234801561001057600080fd5b50604051610f18380380610f188339818101604052602081101561003357600080fd5b5051600180546001600160a01b031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a2610085816001600160e01b0361008c16565b5050610363565b60006100c4337fffffffff000000000000000000000000000000000000000000000000000000008335166001600160e01b0361024916565b61012f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d617574682d756e617574686f72697a6564000000000000000000000000604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080357fffffffff000000000000000000000000000000000000000000000000000000001693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b03851661022057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f64732d70726f78792d63616368652d616464726573732d726571756972656400604482015290519081900360640190fd5b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b60006001600160a01b0383163014156102645750600161035d565b6001546001600160a01b03848116911614156102825750600161035d565b6000546001600160a01b031661029a5750600061035d565b600054604080517fb70096130000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301523060248301527fffffffff00000000000000000000000000000000000000000000000000000000861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561032e57600080fd5b505afa158015610342573d6000803e3d6000fd5b505050506040513d602081101561035857600080fd5b505190505b92915050565b610ba6806103726000396000f3fe60806040526004361061007b5760003560e01c80637a9e5e4b1161004e5780637a9e5e4b146103ca5780638da5cb5b146103fd578063948f507614610412578063bf7e214f146104595761007b565b806313af40351461007d5780631cff79cd146100b05780631f6a1eb9146101db57806360c7d29514610399575b005b34801561008957600080fd5b5061007b600480360360208110156100a057600080fd5b50356001600160a01b031661046e565b610166600480360360408110156100c657600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100f157600080fd5b82018360208201111561010357600080fd5b8035906020019184600183028401116401000000008311171561012557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061051c945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a0578181015183820152602001610188565b50505050905090810190601f1680156101cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610308600480360360408110156101f157600080fd5b81019060208101813564010000000081111561020c57600080fd5b82018360208201111561021e57600080fd5b8035906020019184600183028401116401000000008311171561024057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561029357600080fd5b8201836020820111156102a557600080fd5b803590602001918460018302840111640100000000831117156102c757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061068e945050505050565b60405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561035d578181015183820152602001610345565b50505050905090810190601f16801561038a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156103a557600080fd5b506103ae610869565b604080516001600160a01b039092168252519081900360200190f35b3480156103d657600080fd5b5061007b600480360360208110156103ed57600080fd5b50356001600160a01b0316610878565b34801561040957600080fd5b506103ae610922565b34801561041e57600080fd5b506104456004803603602081101561043557600080fd5b50356001600160a01b0316610931565b604080519115158252519081900360200190f35b34801561046557600080fd5b506103ae610a79565b610484336000356001600160e01b031916610a88565b6104cc576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b6060610534336000356001600160e01b031916610a88565b61057c576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b03861661063b576040805162461bcd60e51b815260206004820181905260248201527f64732d70726f78792d7461726765742d616464726573732d7265717569726564604482015290519081900360640190fd5b600080865160208801896113885a03f43d6040519550601f19601f6020830101168601604052808652806000602088013e81156001811461067b57610682565b8160208801fd5b50505050505092915050565b6002546040516322fd145760e21b81526020600482018181528551602484015285516000946060946001600160a01b0390911693638bf4515c93899390928392604490910191908501908083838c5b838110156106f55781810151838201526020016106dd565b50505050905090810190601f1680156107225780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561073f57600080fd5b505afa158015610753573d6000803e3d6000fd5b505050506040513d602081101561076957600080fd5b505191506001600160a01b03821661085657600254604051633f6861d960e11b81526020600482018181528751602484015287516001600160a01b0390941693637ed0c3b293899383926044909201919085019080838360005b838110156107db5781810151838201526020016107c3565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506040513d602081101561085157600080fd5b505191505b610860828461051c565b90509250929050565b6002546001600160a01b031681565b61088e336000356001600160e01b031916610a88565b6108d6576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b6000610949336000356001600160e01b031916610a88565b610991576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a46001600160a01b038516610a50576040805162461bcd60e51b815260206004820152601f60248201527f64732d70726f78792d63616368652d616464726573732d726571756972656400604482015290519081900360640190fd5b600280546001600160a01b0387166001600160a01b031990911617905560019350505050919050565b6000546001600160a01b031681565b60006001600160a01b038316301415610aa357506001610b6b565b6001546001600160a01b0384811691161415610ac157506001610b6b565b6000546001600160a01b0316610ad957506000610b6b565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b158015610b3c57600080fd5b505afa158015610b50573d6000803e3d6000fd5b505050506040513d6020811015610b6657600080fd5b505190505b9291505056fea265627a7a7231582021153570f7bcbf26d5c67d9d9e2b9182817ae10949efed687aa7bebf95053a7b64736f6c63430005100032a265627a7a7231582062f69d81b372e2b2e0dcec49d218f27ef0075fc8248680321681affb8a1791fb64736f6c63430005100032", + "sourceMap": "3009:798:21:-;;;3213:64;8:9:-1;5:2;;;30:1;27;20:12;5:2;3213:64:21;3252:18;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;3244:5:21;:26;;-1:-1:-1;;;;;;3244:26:21;-1:-1:-1;;;;;3244:26:21;;;;;;;;;;3009:798;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "3009:798:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3009:798:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3181:25;;;:::i;:::-;;;;-1:-1:-1;;;;;3181:25:21;;;;;;;;;;;;;;3356:98;;;:::i;3135:40::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3135:40:21;-1:-1:-1;;;;;3135:40:21;;:::i;3530:275::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3530:275:21;-1:-1:-1;;;;;3530:275:21;;:::i;3181:25::-;;;-1:-1:-1;;;;;3181:25:21;;:::o;3356:98::-;3389:21;3430:17;3436:10;3430:5;:17::i;:::-;3422:25;;3356:98;:::o;3135:40::-;;;;;;;;;;;;;-1:-1:-1;;;;;3135:40:21;;:::o;3530:275::-;3645:5;;3625:27;;3576:21;;-1:-1:-1;;;;;3645:5:21;;3625:27;;;:::i;:::-;-1:-1:-1;;;;;3625:27:21;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;3719:5:21;;3668:58;;;-1:-1:-1;;;;;3668:58:21;;;;;3719:5;;;3668:58;;;;;;3609:44;;-1:-1:-1;3668:58:21;;;;3676:10;;3668:58;;;;;;;;;3744:5;-1:-1:-1;;;;;3736:23:21;;3760:5;3736:30;;;;;;;;;;;;;-1:-1:-1;;;;;3736:30:21;-1:-1:-1;;;;;3736:30:21;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3736:30:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;3776:14:21;;;:7;:14;;;;;;;;;;:22;;-1:-1:-1;;;;;;3776:22:21;;;;;;;;;;;;3530:275::o;3009:798::-;;;;;;;;:::o", "source": "// proxy.sol - execute actions atomically through the proxy's identity\n\n// Copyright (C) 2017 DappHub, LLC\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.5.0 <0.6.0;\n\nimport \"./Auth.sol\";\nimport \"./Note.sol\";\n\n// DSProxy\n// Allows code execution using a persistant identity This can be very\n// useful to execute a sequence of atomic actions. Since the owner of\n// the proxy can be changed, this allows for dynamic ownership models\n// i.e. a multisig\ncontract DSProxy is DSAuth, DSNote {\n DSProxyCache public cache; // global cache for contracts\n\n constructor(address _cacheAddr) public {\n setCache(_cacheAddr);\n }\n\n function() external payable {\n }\n\n // use the proxy to execute calldata _data on contract _code\n function execute(bytes memory _code, bytes memory _data)\n public\n payable\n returns (address target, bytes memory response)\n {\n target = cache.read(_code);\n if (target == address(0)) {\n // deploy contract & store its address in cache\n target = cache.write(_code);\n }\n\n response = execute(target, _data);\n }\n\n function execute(address _target, bytes memory _data)\n public\n auth\n note\n payable\n returns (bytes memory response)\n {\n require(_target != address(0), \"ds-proxy-target-address-required\");\n\n // call contract in current context\n assembly {\n let succeeded := delegatecall(sub(gas, 5000), _target, add(_data, 0x20), mload(_data), 0, 0)\n let size := returndatasize\n\n response := mload(0x40)\n mstore(0x40, add(response, and(add(add(size, 0x20), 0x1f), not(0x1f))))\n mstore(response, size)\n returndatacopy(add(response, 0x20), 0, size)\n\n switch iszero(succeeded)\n case 1 {\n // throw if delegatecall failed\n revert(add(response, 0x20), size)\n }\n }\n }\n\n //set new cache\n function setCache(address _cacheAddr)\n public\n auth\n note\n returns (bool)\n {\n require(_cacheAddr != address(0), \"ds-proxy-cache-address-required\");\n cache = DSProxyCache(_cacheAddr); // overwrite cache\n return true;\n }\n}\n\n// DSProxyFactory\n// This factory deploys new proxy instances through build()\n// Deployed proxy addresses are logged\ncontract DSProxyFactory {\n event Created(address indexed sender, address indexed owner, address proxy, address cache);\n mapping(address=>address) public proxies;\n DSProxyCache public cache;\n\n constructor() public {\n cache = new DSProxyCache();\n }\n\n // deploys a new proxy instance\n // sets owner of proxy to caller\n function build() public returns (address payable proxy) {\n proxy = build(msg.sender);\n }\n\n // deploys a new proxy instance\n // sets custom owner of proxy\n function build(address owner) public returns (address payable proxy) {\n proxy = address(new DSProxy(address(cache)));\n emit Created(msg.sender, owner, address(proxy), address(cache));\n DSProxy(proxy).setOwner(owner);\n proxies[owner] = proxy;\n }\n}\n\n// DSProxyCache\n// This global cache stores addresses of contracts previously deployed\n// by a proxy. This saves gas from repeat deployment of the same\n// contracts and eliminates blockchain bloat.\n\n// By default, all proxies deployed from the same factory store\n// contracts in the same cache. The cache a proxy instance uses can be\n// changed. The cache uses the sha3 hash of a contract's bytecode to\n// lookup the address\ncontract DSProxyCache {\n mapping(bytes32 => address) cache;\n\n function read(bytes memory _code) public view returns (address) {\n bytes32 hash = keccak256(_code);\n return cache[hash];\n }\n\n function write(bytes memory _code) public returns (address target) {\n assembly {\n target := create(0, add(_code, 0x20), mload(_code))\n switch iszero(extcodesize(target))\n case 1 {\n // throw if contract failed to deploy\n revert(0, 0)\n }\n }\n bytes32 hash = keccak256(_code);\n cache[hash] = target;\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol", "ast": { @@ -1073,10 +1073,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1913:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1460,10 +1460,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2730:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2085,7 +2085,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3436:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2396,7 +2396,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3676:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -2973,7 +2973,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4392:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -3236,7 +3236,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4799:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -4377,10 +4377,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1913:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4764,10 +4764,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2730:7:21", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5389,7 +5389,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3436:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -5700,7 +5700,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "3676:3:21", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -6277,7 +6277,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4392:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -6540,7 +6540,7 @@ "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7899, + "referencedDeclaration": 7821, "src": "4799:9:21", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", @@ -6732,7 +6732,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.841Z", + "updatedAt": "2020-04-03T06:25:13.525Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DaiJoinLike.json b/packages/smart-contracts/artifacts/DaiJoinLike.json index 89a2f75..e05e4c0 100644 --- a/packages/smart-contracts/artifacts/DaiJoinLike.json +++ b/packages/smart-contracts/artifacts/DaiJoinLike.json @@ -72,7 +72,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"dai\",\"outputs\":[{\"internalType\":\"contract GemLike\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"join\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"vat\",\"outputs\":[{\"internalType\":\"contract VatLike\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"DaiJoinLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"dai\",\"outputs\":[{\"internalType\":\"contract GemLike\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"join\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"vat\",\"outputs\":[{\"internalType\":\"contract VatLike\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"DaiJoinLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -3939,10 +3939,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4672,10 +4672,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4985,10 +4985,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10558,7 +10558,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -10675,7 +10675,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12206,7 +12206,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12323,7 +12323,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -16499,10 +16499,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17232,10 +17232,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17545,10 +17545,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23118,7 +23118,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -23235,7 +23235,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24766,7 +24766,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24883,7 +24883,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25205,7 +25205,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.853Z", + "updatedAt": "2020-04-03T06:25:13.540Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/DedgeCompoundManager.json b/packages/smart-contracts/artifacts/DedgeCompoundManager.json index 8dea819..5238c65 100644 --- a/packages/smart-contracts/artifacts/DedgeCompoundManager.json +++ b/packages/smart-contracts/artifacts/DedgeCompoundManager.json @@ -536,11 +536,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveCToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"approveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrowThroughProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCTokenAddress\",\"type\":\"address\"}],\"name\":\"clearCollateralDust\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingDustAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCTokenAddress\",\"type\":\"address\"}],\"name\":\"clearDebtDust\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarketsAndApproveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalfThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"supplyCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"borrowCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"supplyETH\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyETHAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_loanAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"swapCollateralPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_loanAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"swapDebtPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeCompoundManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"swapOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeCompoundManager.sol\":\"DedgeCompoundManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICompoundPriceOracle.sol\":{\"keccak256\":\"0xb19ae717f5b05fbc0ffdf3a4b96cd71811071ab2d3c5f73ee8835541c5bd573b\",\"urls\":[\"bzz-raw://52efc7166851b50b539166f234babc41cf25a4cc2c5997c9bc3f801117b4ea47\",\"dweb:/ipfs/QmXv2P3p6adgTCHUMXdufESTbJEdbQ3DkLKRnsENRC1Dmx\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":{\"keccak256\":\"0xfe69c2a9adaca0cdcfb06df5a2a2d99b5fd2d507e85379d7e412e218c523583a\",\"urls\":[\"bzz-raw://525284cba89cdd1c6b146ec5774e284b6b0af8639cfad96c059e700a9e727ca2\",\"dweb:/ipfs/QmSBBvdmCWkfFscFKWK6oMYL7F4HQ2aZPxJhEX5p3W4ivp\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeCompoundManager.sol\":{\"keccak256\":\"0x40cf0894186b39884631af6e60f13fa4855d63742cc13fd29caaf4c9a5b55264\",\"urls\":[\"bzz-raw://f4549c40d3dcaa3bca353db65d8911b16fa9b27507f1d24b89a0ea61abbce621\",\"dweb:/ipfs/QmWQCPGiTkyZxUv8YYzW3NU5i4kv5wnXZH1xNLmPWgjZwt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b5061449d806100206000396000f3fe60806040526004361061014b5760003560e01c80637720cc87116100b6578063c04bea9b1161006f578063c04bea9b14610391578063c2998238146103ad578063d13b8c72146103d6578063d2f70c40146103f2578063d882dc6c1461041b578063f2b9fdb8146104375761014b565b80637720cc87146102cf57806396294178146102eb5780639a22a1b914610307578063abdb5ea814610330578063b14886ee1461034c578063ba59154f146103755761014b565b806341ec5cc41161010857806341ec5cc41461022c5780634907b8fc146102485780634b8a35291461025257806359086a5e1461027b57806367600cc21461029757806375d40945146102b35761014b565b80630b4e0630146101505780631e9a69501461016c57806324d1ea12146101885780632d8af543146101b15780632f379b13146101da5780633dc4d99a14610203575b600080fd5b61016a60048036036101659190810190613643565b610453565b005b61018660048036036101819190810190613643565b6105e5565b005b34801561019457600080fd5b506101af60048036036101aa9190810190613831565b6106b6565b005b3480156101bd57600080fd5b506101d860048036036101d391908101906136e2565b610a73565b005b3480156101e657600080fd5b5061020160048036036101fc91908101906134ea565b610a88565b005b34801561020f57600080fd5b5061022a600480360361022591908101906136e2565b610e27565b005b61024660048036036102419190810190613643565b610edf565b005b610250610ef5565b005b34801561025e57600080fd5b5061027960048036036102749190810190613643565b610f6c565b005b61029560048036036102909190810190613591565b61103d565b005b6102b160048036036102ac9190810190613643565b6111d5565b005b6102cd60048036036102c8919081019061367f565b6111ee565b005b6102e960048036036102e49190810190613591565b611208565b005b61030560048036036103009190810190613643565b61126c565b005b34801561031357600080fd5b5061032e60048036036103299190810190613643565b61133d565b005b61034a60048036036103459190810190613643565b611356565b005b34801561035857600080fd5b50610373600480360361036e9190810190613831565b6114e0565b005b61038f600480360361038a9190810190613643565b61180f565b005b6103ab60048036036103a691908101906135e0565b611871565b005b3480156103b957600080fd5b506103d460048036036103cf91908101906136e2565b611c89565b005b6103f060048036036103eb91908101906135e0565b611da8565b005b3480156103fe57600080fd5b5061041960048036036104149190810190613643565b612224565b005b61043560048036036104309190810190613643565b61237e565b005b610451600480360361044c9190810190613643565b612397565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161048e9190613e5b565b60206040518083038186803b1580156104a657600080fd5b505afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104de9190810190613808565b9050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105345761053333308585612535565b5b61053e8383612397565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105799190613e5b565b60206040518083038186803b15801561059157600080fd5b505afa1580156105a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c99190810190613808565b90506105df84336105da848661268c565b6126e2565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b8152600401610620919061415d565b602060405180830381600087803b15801561063a57600080fd5b505af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106729190810190613808565b146106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a990613fdd565b60405180910390fd5b5050565b6106be613206565b82826106cd91908101906137df565b90506000816000015190506000826020015190506000836040015190506000610711886107038b8d6128e790919063ffffffff16565b6128e790919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561075957600080fd5b505afa15801561076d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061079191908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107d3576107ce838b611356565b6108fe565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061085391908101906134c1565b90506000610861828d61293c565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b815260040161089e929190613ef9565b602060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190613764565b506108fb8582611356565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561094457600080fd5b505afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097c91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109be576109b98282610f6c565b610a67565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0657600080fd5b505afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a3e91908101906134c1565b90506000610a4c8284612952565b9050610a588482610f6c565b610a638282856129ed565b5050505b50505050505050505050565b610a7c81611c89565b610a8581610e27565b50565b600085905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b0d91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610b4857849050610bd2565b610bcf8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9157600080fd5b505afa158015610ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bc991908101906134c1565b86612b25565b90505b606089604051602001610be59190613e5b565b6040516020818303038152906040528585604051602001610c0893929190613e20565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9991908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cde57600080fd5b505afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d1691908101906134c1565b9050610d228a82612bc0565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8673ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dbd91908101906134c1565b86866040518563ffffffff1660e01b8152600401610dde9493929190613e76565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b50505050610e1a8a82612dc2565b5050505050505050505050565b60008090505b8151811015610edb57734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610e6d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610ece57610ecd828281518110610e9f57fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612224565b5b8080600101915050610e2d565b5050565b610ee7610ef5565b610ef18282610f6c565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f5157600080fd5b505af1158015610f65573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b8152600401610fa7919061415d565b602060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ff99190810190613808565b14611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090613fbd565b60405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f6578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b81526004016110bf9190613e5b565b6000604051808303818588803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b50505050506111d0565b6111008282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b815260040161113d929190613ef9565b602060405180830381600087803b15801561115757600080fd5b505af115801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061118f9190810190613808565b146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c69061405d565b60405180910390fd5b5b505050565b6111df828261126c565b6111ea8233836126e2565b5050565b6111f88484612397565b6112028282610f6c565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461125c5761125b33308484612535565b5b61126783838361103d565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b81526004016112a7919061415d565b602060405180830381600087803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f99190810190613808565b14611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090613ffd565b60405180910390fd5b5050565b6113478282610f6c565b6113528233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611404578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505050506114dc565b61140e8282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401611449919061415d565b602060405180830381600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061149b9190810190613808565b146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061409d565b60405180910390fd5b5b5050565b6114e8613206565b82826114f791908101906137df565b9050600081600001519050600082602001519050600083604001519050600061153b8861152d8b8d612fc490919063ffffffff16565b612fc490919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561158357600080fd5b505afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115bb91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115fd576115f88282612397565b61169a565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164557600080fd5b505afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061167d91908101906134c1565b9050600061168b828461293c565b90506116978482612397565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e057600080fd5b505afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171891908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561175a57611755838b61126c565b611803565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a257600080fd5b505afa1580156117b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117da91908101906134c1565b905060006117e8828d612952565b90506117f4858261126c565b6117ff82828e6129ed565b5050505b50505050505050505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118635761186233308484612535565b5b61186d8282611356565b5050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906140fd565b60405180910390fd5b6000808590506118f0858561126c565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561193657600080fd5b505afa15801561194a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061196e91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611a2f57611a288373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ea57600080fd5b505afa1580156119fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a2291908101906134c1565b8561293c565b9150611c77565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7557600080fd5b505afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aad91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b6e57611b678573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2957600080fd5b505afa158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b6191908101906134c1565b8561300e565b9150611c76565b611c738573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb757600080fd5b505afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bef91908101906134c1565b8473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c6d91908101906134c1565b86613024565b91505b5b611c818383612397565b505050505050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b8152600401611cd89190613f22565b600060405180830381600087803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611d2f9190810190613723565b905060008090505b8151811015611da3576000828281518110611d4e57fe5b602002602001015114611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d9061403d565b60405180910390fd5b8080600101915050611d37565b505050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0e9061413d565b60405180910390fd5b600084905060008060008373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6757600080fd5b505afa158015611e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e9f91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611f79578473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f5091908101906134c1565b9050611f5c8187612952565b9250611f688584610f6c565b611f738184886129ed565b50612210565b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611fbf57600080fd5b505afa158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff791908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156120d1578673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561207057600080fd5b505afa158015612084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a891908101906134c1565b91506120b48287612b25565b92506120c08584610f6c565b6120cb82848861303c565b5061220f565b8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561211757600080fd5b505afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061214f91908101906134c1565b91508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561219757600080fd5b505afa1580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121cf91908101906134c1565b905060006121dd8388612b25565b90506121e98282612952565b93506121f58685610f6c565b6122008285836129ed565b5061220c83828961303c565b50505b5b61221a8787611356565b5050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561226c57600080fd5b505afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122a491908101906134c1565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016122e5929190613ef9565b602060405180830381600087803b1580156122ff57600080fd5b505af1158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123379190810190613764565b151514612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906140dd565b60405180910390fd5b505050565b61238882826105e5565b6123938233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245957734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561243b57600080fd5b505af115801561244f573d6000803e3d6000fd5b5050505050612531565b6124638282612224565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040161249e919061415d565b602060405180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124f09190810190613808565b14612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279061411d565b60405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561257d57600080fd5b505afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125b591908101906134c1565b90508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b81526004016125f493929190613ec2565b602060405180830381600087803b15801561260e57600080fd5b505af1158015612622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126469190810190613764565b612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c9061407d565b60405180910390fd5b5050505050565b6000828211156126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c89061401d565b60405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612798578173ffffffffffffffffffffffffffffffffffffffff168160405161274e90613e46565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b5050506128e2565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156127de57600080fd5b505afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061281691908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612850929190613ef9565b602060405180830381600087803b15801561286a57600080fd5b505af115801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128a29190810190613764565b6128e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d8906140bd565b60405180910390fd5b5b505050565b600080828401905083811015612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990613f9d565b60405180910390fd5b8091505092915050565b600061294a8383600161303c565b905092915050565b600061295d836130e0565b73ffffffffffffffffffffffffffffffffffffffff16632640f62c836040518263ffffffff1660e01b8152600401612995919061415d565b60206040518083038186803b1580156129ad57600080fd5b505afa1580156129c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e59190810190613808565b905092915050565b6000806129f9856130e0565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401612a36929190613ef9565b602060405180830381600087803b158015612a5057600080fd5b505af1158015612a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a889190810190613764565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b8152600401612ac9939291906141a1565b602060405180830381600087803b158015612ae357600080fd5b505af1158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b1b9190810190613808565b9150509392505050565b6000612b30836130e0565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401612b68919061415d565b60206040518083038186803b158015612b8057600080fd5b505afa158015612b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612bb89190810190613808565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b505afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c4091908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612cb757600080fd5b505afa158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cef919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d6d919081019061378d565b6040518463ffffffff1660e01b8152600401612d8b93929190613f44565b600060405180830381600087803b158015612da557600080fd5b505af1158015612db9573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0a57600080fd5b505afa158015612e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e4291908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612eb957600080fd5b505afa158015612ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ef1919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612f3757600080fd5b505afa158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f6f919081019061378d565b6040518463ffffffff1660e01b8152600401612f8d93929190613f44565b600060405180830381600087803b158015612fa757600080fd5b505af1158015612fbb573d6000803e3d6000fd5b50505050505050565b600061300683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613186565b905092915050565b600061301c838360016129ed565b905092915050565b600061303384848460016131e1565b90509392505050565b6000613047846130e0565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b8152600401613085929190614178565b6020604051808303818588803b15801561309e57600080fd5b505af11580156130b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506130d79190810190613808565b90509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161312f9190613e5b565b60206040518083038186803b15801561314757600080fd5b505afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061317f91908101906134c1565b9050919050565b60008383111582906131ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c59190613f7b565b60405180910390fd5b5060008385039050809150509392505050565b6000806131ee868561300e565b90506131fb85828561303c565b915050949350505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600081359050613278816143d0565b92915050565b60008151905061328d816143d0565b92915050565b6000813590506132a2816143e7565b92915050565b600082601f8301126132b957600080fd5b81356132cc6132c782614205565b6141d8565b915081818352602084019350602081019050838560208402820111156132f157600080fd5b60005b8381101561332157816133078882613269565b8452602084019350602083019250506001810190506132f4565b5050505092915050565b600082601f83011261333c57600080fd5b815161334f61334a8261422d565b6141d8565b9150818183526020840193506020810190508385602084028201111561337457600080fd5b60005b838110156133a4578161338a88826134ac565b845260208401935060208301925050600181019050613377565b5050505092915050565b6000815190506133bd816143fe565b92915050565b6000815190506133d281614415565b92915050565b60008083601f8401126133ea57600080fd5b8235905067ffffffffffffffff81111561340357600080fd5b60208301915083600182028301111561341b57600080fd5b9250929050565b6000815190506134318161442c565b92915050565b60006060828403121561344957600080fd5b61345360606141d8565b9050600061346384828501613269565b600083015250602061347784828501613269565b602083015250604061348b84828501613269565b60408301525092915050565b6000813590506134a681614443565b92915050565b6000815190506134bb81614443565b92915050565b6000602082840312156134d357600080fd5b60006134e18482850161327e565b91505092915050565b600080600080600080600060c0888a03121561350557600080fd5b60006135138a828b01613269565b97505060206135248a828b01613293565b96505060406135358a828b01613269565b95505060606135468a828b01613269565b94505060806135578a828b01613497565b93505060a088013567ffffffffffffffff81111561357457600080fd5b6135808a828b016133d8565b925092505092959891949750929550565b6000806000606084860312156135a657600080fd5b60006135b486828701613269565b93505060206135c586828701613269565b92505060406135d686828701613497565b9150509250925092565b600080600080608085870312156135f657600080fd5b600061360487828801613269565b945050602061361587828801613269565b935050604061362687828801613497565b925050606061363787828801613269565b91505092959194509250565b6000806040838503121561365657600080fd5b600061366485828601613269565b925050602061367585828601613497565b9150509250929050565b6000806000806080858703121561369557600080fd5b60006136a387828801613269565b94505060206136b487828801613497565b93505060406136c587828801613269565b92505060606136d687828801613497565b91505092959194509250565b6000602082840312156136f457600080fd5b600082013567ffffffffffffffff81111561370e57600080fd5b61371a848285016132a8565b91505092915050565b60006020828403121561373557600080fd5b600082015167ffffffffffffffff81111561374f57600080fd5b61375b8482850161332b565b91505092915050565b60006020828403121561377657600080fd5b6000613784848285016133ae565b91505092915050565b60006020828403121561379f57600080fd5b60006137ad848285016133c3565b91505092915050565b6000602082840312156137c857600080fd5b60006137d684828501613422565b91505092915050565b6000606082840312156137f157600080fd5b60006137ff84828501613437565b91505092915050565b60006020828403121561381a57600080fd5b6000613828848285016134ac565b91505092915050565b60008060008060006080868803121561384957600080fd5b600061385788828901613497565b955050602061386888828901613497565b945050604061387988828901613497565b935050606086013567ffffffffffffffff81111561389657600080fd5b6138a2888289016133d8565b92509250509295509295909350565b60006138bd83836138d8565b60208301905092915050565b6138d281614347565b82525050565b6138e1816142d1565b82525050565b6138f0816142d1565b82525050565b600061390182614265565b61390b8185614293565b935061391683614255565b8060005b8381101561394757815161392e88826138b1565b975061393983614286565b92505060018101905061391a565b5085935050505092915050565b61395d81614301565b82525050565b600061396f83856142b5565b935061397c83858461437d565b82840190509392505050565b600061399382614270565b61399d81856142a4565b93506139ad81856020860161438c565b6139b6816143bf565b840191505092915050565b60006139cc82614270565b6139d681856142b5565b93506139e681856020860161438c565b80840191505092915050565b60006139fd8261427b565b613a0781856142c0565b9350613a1781856020860161438c565b613a20816143bf565b840191505092915050565b6000613a38601b836142c0565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613a78601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c656400006000830152602082019050919050565b6000613ab8601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c656400006000830152602082019050919050565b6000613af86029836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613b5e6014836142c0565b91507f736166652d6d6174682d7375622d6661696c65640000000000000000000000006000830152602082019050919050565b6000613b9e601e836142c0565b91507f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c656400006000830152602082019050919050565b6000613bde6023836142c0565b91507f636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d66616960008301527f6c656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c44601e836142c0565b91507f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c656400006000830152602082019050919050565b6000613c84601d836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000613cc46019836142c0565b91507f636d706e642d6d67722d7472616e736665722d6661696c6564000000000000006000830152602082019050919050565b6000613d046000836142b5565b9150600082019050919050565b6000613d1e6020836142c0565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b6000613d5e601d836142c0565b91507f636c6561722d636f6c6c61746572616c2d73616d652d616464726573730000006000830152602082019050919050565b6000613d9e601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c656400006000830152602082019050919050565b6000613dde6017836142c0565b91507f636c6561722d646562742d73616d652d616464726573730000000000000000006000830152602082019050919050565b613e1a8161433d565b82525050565b6000613e2c82866139c1565b9150613e39828486613963565b9150819050949350505050565b6000613e5182613cf7565b9150819050919050565b6000602082019050613e7060008301846138e7565b92915050565b6000608082019050613e8b60008301876138c9565b613e9860208301866138e7565b613ea56040830185613e11565b8181036060830152613eb78184613988565b905095945050505050565b6000606082019050613ed760008301866138e7565b613ee460208301856138e7565b613ef16040830184613e11565b949350505050565b6000604082019050613f0e60008301856138e7565b613f1b6020830184613e11565b9392505050565b60006020820190508181036000830152613f3c81846138f6565b905092915050565b6000606082019050613f596000830186613954565b613f666020830185613954565b613f736040830184613954565b949350505050565b60006020820190508181036000830152613f9581846139f2565b905092915050565b60006020820190508181036000830152613fb681613a2b565b9050919050565b60006020820190508181036000830152613fd681613a6b565b9050919050565b60006020820190508181036000830152613ff681613aab565b9050919050565b6000602082019050818103600083015261401681613aeb565b9050919050565b6000602082019050818103600083015261403681613b51565b9050919050565b6000602082019050818103600083015261405681613b91565b9050919050565b6000602082019050818103600083015261407681613bd1565b9050919050565b6000602082019050818103600083015261409681613c37565b9050919050565b600060208201905081810360008301526140b681613c77565b9050919050565b600060208201905081810360008301526140d681613cb7565b9050919050565b600060208201905081810360008301526140f681613d11565b9050919050565b6000602082019050818103600083015261411681613d51565b9050919050565b6000602082019050818103600083015261413681613d91565b9050919050565b6000602082019050818103600083015261415681613dd1565b9050919050565b60006020820190506141726000830184613e11565b92915050565b600060408201905061418d6000830185613e11565b61419a6020830184613e11565b9392505050565b60006060820190506141b66000830186613e11565b6141c36020830185613e11565b6141d06040830184613e11565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156141fb57600080fd5b8060405250919050565b600067ffffffffffffffff82111561421c57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561424457600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006142dc8261431d565b9050919050565b60006142ee8261431d565b9050919050565b60008115159050919050565b6000819050919050565b6000614316826142d1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061435282614359565b9050919050565b60006143648261436b565b9050919050565b60006143768261431d565b9050919050565b82818337600083830152505050565b60005b838110156143aa57808201518184015260208101905061438f565b838111156143b9576000848401525b50505050565b6000601f19601f8301169050919050565b6143d9816142d1565b81146143e457600080fd5b50565b6143f0816142e3565b81146143fb57600080fd5b50565b614407816142f5565b811461441257600080fd5b50565b61441e81614301565b811461442957600080fd5b50565b6144358161430b565b811461444057600080fd5b50565b61444c8161433d565b811461445757600080fd5b5056fea365627a7a72315820bca4a210997ac10003242cfbaf0c3d19e28510725f51c9d56bc6118d8a896bbf6c6578706572696d656e74616cf564736f6c63430005100040", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c80637720cc87116100b6578063c04bea9b1161006f578063c04bea9b14610391578063c2998238146103ad578063d13b8c72146103d6578063d2f70c40146103f2578063d882dc6c1461041b578063f2b9fdb8146104375761014b565b80637720cc87146102cf57806396294178146102eb5780639a22a1b914610307578063abdb5ea814610330578063b14886ee1461034c578063ba59154f146103755761014b565b806341ec5cc41161010857806341ec5cc41461022c5780634907b8fc146102485780634b8a35291461025257806359086a5e1461027b57806367600cc21461029757806375d40945146102b35761014b565b80630b4e0630146101505780631e9a69501461016c57806324d1ea12146101885780632d8af543146101b15780632f379b13146101da5780633dc4d99a14610203575b600080fd5b61016a60048036036101659190810190613643565b610453565b005b61018660048036036101819190810190613643565b6105e5565b005b34801561019457600080fd5b506101af60048036036101aa9190810190613831565b6106b6565b005b3480156101bd57600080fd5b506101d860048036036101d391908101906136e2565b610a73565b005b3480156101e657600080fd5b5061020160048036036101fc91908101906134ea565b610a88565b005b34801561020f57600080fd5b5061022a600480360361022591908101906136e2565b610e27565b005b61024660048036036102419190810190613643565b610edf565b005b610250610ef5565b005b34801561025e57600080fd5b5061027960048036036102749190810190613643565b610f6c565b005b61029560048036036102909190810190613591565b61103d565b005b6102b160048036036102ac9190810190613643565b6111d5565b005b6102cd60048036036102c8919081019061367f565b6111ee565b005b6102e960048036036102e49190810190613591565b611208565b005b61030560048036036103009190810190613643565b61126c565b005b34801561031357600080fd5b5061032e60048036036103299190810190613643565b61133d565b005b61034a60048036036103459190810190613643565b611356565b005b34801561035857600080fd5b50610373600480360361036e9190810190613831565b6114e0565b005b61038f600480360361038a9190810190613643565b61180f565b005b6103ab60048036036103a691908101906135e0565b611871565b005b3480156103b957600080fd5b506103d460048036036103cf91908101906136e2565b611c89565b005b6103f060048036036103eb91908101906135e0565b611da8565b005b3480156103fe57600080fd5b5061041960048036036104149190810190613643565b612224565b005b61043560048036036104309190810190613643565b61237e565b005b610451600480360361044c9190810190613643565b612397565b005b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161048e9190613e5b565b60206040518083038186803b1580156104a657600080fd5b505afa1580156104ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104de9190810190613808565b9050734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105345761053333308585612535565b5b61053e8383612397565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105799190613e5b565b60206040518083038186803b15801561059157600080fd5b505afa1580156105a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c99190810190613808565b90506105df84336105da848661268c565b6126e2565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b8152600401610620919061415d565b602060405180830381600087803b15801561063a57600080fd5b505af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106729190810190613808565b146106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a990613fdd565b60405180910390fd5b5050565b6106be613206565b82826106cd91908101906137df565b90506000816000015190506000826020015190506000836040015190506000610711886107038b8d6128e790919063ffffffff16565b6128e790919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561075957600080fd5b505afa15801561076d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061079191908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107d3576107ce838b611356565b6108fe565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561081b57600080fd5b505afa15801561082f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061085391908101906134c1565b90506000610861828d61293c565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b815260040161089e929190613ef9565b602060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108f09190810190613764565b506108fb8582611356565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561094457600080fd5b505afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097c91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109be576109b98282610f6c565b610a67565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0657600080fd5b505afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a3e91908101906134c1565b90506000610a4c8284612952565b9050610a588482610f6c565b610a638282856129ed565b5050505b50505050505050505050565b610a7c81611c89565b610a8581610e27565b50565b600085905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b0d91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610b4857849050610bd2565b610bcf8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9157600080fd5b505afa158015610ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bc991908101906134c1565b86612b25565b90505b606089604051602001610be59190613e5b565b6040516020818303038152906040528585604051602001610c0893929190613e20565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9991908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cde57600080fd5b505afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d1691908101906134c1565b9050610d228a82612bc0565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8673ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dbd91908101906134c1565b86866040518563ffffffff1660e01b8152600401610dde9493929190613e76565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b50505050610e1a8a82612dc2565b5050505050505050505050565b60008090505b8151811015610edb57734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16828281518110610e6d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610ece57610ecd828281518110610e9f57fe5b60200260200101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612224565b5b8080600101915050610e2d565b5050565b610ee7610ef5565b610ef18282610f6c565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610f5157600080fd5b505af1158015610f65573d6000803e3d6000fd5b5050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec836040518263ffffffff1660e01b8152600401610fa7919061415d565b602060405180830381600087803b158015610fc157600080fd5b505af1158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ff99190810190613808565b14611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090613fbd565b60405180910390fd5b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110f6578173ffffffffffffffffffffffffffffffffffffffff1663e597461982856040518363ffffffff1660e01b81526004016110bf9190613e5b565b6000604051808303818588803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b50505050506111d0565b6111008282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16632608f81885846040518363ffffffff1660e01b815260040161113d929190613ef9565b602060405180830381600087803b15801561115757600080fd5b505af115801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061118f9190810190613808565b146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c69061405d565b60405180910390fd5b5b505050565b6111df828261126c565b6111ea8233836126e2565b5050565b6111f88484612397565b6112028282610f6c565b50505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461125c5761125b33308484612535565b5b61126783838361103d565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b81526004016112a7919061415d565b602060405180830381600087803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f99190810190613808565b14611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133090613ffd565b60405180910390fd5b5050565b6113478282610f6c565b6113528233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611404578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505050506114dc565b61140e8282612224565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401611449919061415d565b602060405180830381600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061149b9190810190613808565b146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061409d565b60405180910390fd5b5b5050565b6114e8613206565b82826114f791908101906137df565b9050600081600001519050600082602001519050600083604001519050600061153b8861152d8b8d612fc490919063ffffffff16565b612fc490919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561158357600080fd5b505afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115bb91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115fd576115f88282612397565b61169a565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164557600080fd5b505afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061167d91908101906134c1565b9050600061168b828461293c565b90506116978482612397565b50505b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e057600080fd5b505afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171891908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561175a57611755838b61126c565b611803565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a257600080fd5b505afa1580156117b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117da91908101906134c1565b905060006117e8828d612952565b90506117f4858261126c565b6117ff82828e6129ed565b5050505b50505050505050505050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146118635761186233308484612535565b5b61186d8282611356565b5050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906140fd565b60405180910390fd5b6000808590506118f0858561126c565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561193657600080fd5b505afa15801561194a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061196e91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611a2f57611a288373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ea57600080fd5b505afa1580156119fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a2291908101906134c1565b8561293c565b9150611c77565b8073ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7557600080fd5b505afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aad91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b6e57611b678573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2957600080fd5b505afa158015611b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b6191908101906134c1565b8561300e565b9150611c76565b611c738573ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bb757600080fd5b505afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bef91908101906134c1565b8473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3557600080fd5b505afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c6d91908101906134c1565b86613024565b91505b5b611c818383612397565b505050505050565b6060733d9819210a31b4961b30ef54be2aed79b9c9cd3b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b8152600401611cd89190613f22565b600060405180830381600087803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611d2f9190810190613723565b905060008090505b8151811015611da3576000828281518110611d4e57fe5b602002602001015114611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d9061403d565b60405180910390fd5b8080600101915050611d37565b505050565b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0e9061413d565b60405180910390fd5b600084905060008060008373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6757600080fd5b505afa158015611e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e9f91908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415611f79578473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f5091908101906134c1565b9050611f5c8187612952565b9250611f688584610f6c565b611f738184886129ed565b50612210565b8373ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611fbf57600080fd5b505afa158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff791908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156120d1578673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561207057600080fd5b505afa158015612084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120a891908101906134c1565b91506120b48287612b25565b92506120c08584610f6c565b6120cb82848861303c565b5061220f565b8673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561211757600080fd5b505afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061214f91908101906134c1565b91508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561219757600080fd5b505afa1580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121cf91908101906134c1565b905060006121dd8388612b25565b90506121e98282612952565b93506121f58685610f6c565b6122008285836129ed565b5061220c83828961303c565b50505b5b61221a8787611356565b5050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561226c57600080fd5b505afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122a491908101906134c1565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016122e5929190613ef9565b602060405180830381600087803b1580156122ff57600080fd5b505af1158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123379190810190613764565b151514612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906140dd565b60405180910390fd5b505050565b61238882826105e5565b6123938233836126e2565b5050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245957734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff16631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561243b57600080fd5b505af115801561244f573d6000803e3d6000fd5b5050505050612531565b6124638282612224565b60008273ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040161249e919061415d565b602060405180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124f09190810190613808565b14612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279061411d565b60405180910390fd5b5b5050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561257d57600080fd5b505afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125b591908101906134c1565b90508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8686856040518463ffffffff1660e01b81526004016125f493929190613ec2565b602060405180830381600087803b15801561260e57600080fd5b505af1158015612622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126469190810190613764565b612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c9061407d565b60405180910390fd5b5050505050565b6000828211156126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c89061401d565b60405180910390fd5b600082840390508091505092915050565b734ddc2d193948926d02f9b1fe9e1daa0718270ed573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612798578173ffffffffffffffffffffffffffffffffffffffff168160405161274e90613e46565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b5050506128e2565b8273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156127de57600080fd5b505afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061281691908101906134c1565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612850929190613ef9565b602060405180830381600087803b15801561286a57600080fd5b505af115801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128a29190810190613764565b6128e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d8906140bd565b60405180910390fd5b5b505050565b600080828401905083811015612932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292990613f9d565b60405180910390fd5b8091505092915050565b600061294a8383600161303c565b905092915050565b600061295d836130e0565b73ffffffffffffffffffffffffffffffffffffffff16632640f62c836040518263ffffffff1660e01b8152600401612995919061415d565b60206040518083038186803b1580156129ad57600080fd5b505afa1580156129c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e59190810190613808565b905092915050565b6000806129f9856130e0565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401612a36929190613ef9565b602060405180830381600087803b158015612a5057600080fd5b505af1158015612a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a889190810190613764565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b8152600401612ac9939291906141a1565b602060405180830381600087803b158015612ae357600080fd5b505af1158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b1b9190810190613808565b9150509392505050565b6000612b30836130e0565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401612b68919061415d565b60206040518083038186803b158015612b8057600080fd5b505afa158015612b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612bb89190810190613808565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c0857600080fd5b505afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c4091908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612cb757600080fd5b505afa158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612cef919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3557600080fd5b505afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d6d919081019061378d565b6040518463ffffffff1660e01b8152600401612d8b93929190613f44565b600060405180830381600087803b158015612da557600080fd5b505af1158015612db9573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0a57600080fd5b505afa158015612e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e4291908101906137b6565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612eb957600080fd5b505afa158015612ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ef1919081019061378d565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015612f3757600080fd5b505afa158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f6f919081019061378d565b6040518463ffffffff1660e01b8152600401612f8d93929190613f44565b600060405180830381600087803b158015612fa757600080fd5b505af1158015612fbb573d6000803e3d6000fd5b50505050505050565b600061300683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613186565b905092915050565b600061301c838360016129ed565b905092915050565b600061303384848460016131e1565b90509392505050565b6000613047846130e0565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b8152600401613085929190614178565b6020604051808303818588803b15801561309e57600080fd5b505af11580156130b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506130d79190810190613808565b90509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161312f9190613e5b565b60206040518083038186803b15801561314757600080fd5b505afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061317f91908101906134c1565b9050919050565b60008383111582906131ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c59190613f7b565b60405180910390fd5b5060008385039050809150509392505050565b6000806131ee868561300e565b90506131fb85828561303c565b915050949350505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600081359050613278816143d0565b92915050565b60008151905061328d816143d0565b92915050565b6000813590506132a2816143e7565b92915050565b600082601f8301126132b957600080fd5b81356132cc6132c782614205565b6141d8565b915081818352602084019350602081019050838560208402820111156132f157600080fd5b60005b8381101561332157816133078882613269565b8452602084019350602083019250506001810190506132f4565b5050505092915050565b600082601f83011261333c57600080fd5b815161334f61334a8261422d565b6141d8565b9150818183526020840193506020810190508385602084028201111561337457600080fd5b60005b838110156133a4578161338a88826134ac565b845260208401935060208301925050600181019050613377565b5050505092915050565b6000815190506133bd816143fe565b92915050565b6000815190506133d281614415565b92915050565b60008083601f8401126133ea57600080fd5b8235905067ffffffffffffffff81111561340357600080fd5b60208301915083600182028301111561341b57600080fd5b9250929050565b6000815190506134318161442c565b92915050565b60006060828403121561344957600080fd5b61345360606141d8565b9050600061346384828501613269565b600083015250602061347784828501613269565b602083015250604061348b84828501613269565b60408301525092915050565b6000813590506134a681614443565b92915050565b6000815190506134bb81614443565b92915050565b6000602082840312156134d357600080fd5b60006134e18482850161327e565b91505092915050565b600080600080600080600060c0888a03121561350557600080fd5b60006135138a828b01613269565b97505060206135248a828b01613293565b96505060406135358a828b01613269565b95505060606135468a828b01613269565b94505060806135578a828b01613497565b93505060a088013567ffffffffffffffff81111561357457600080fd5b6135808a828b016133d8565b925092505092959891949750929550565b6000806000606084860312156135a657600080fd5b60006135b486828701613269565b93505060206135c586828701613269565b92505060406135d686828701613497565b9150509250925092565b600080600080608085870312156135f657600080fd5b600061360487828801613269565b945050602061361587828801613269565b935050604061362687828801613497565b925050606061363787828801613269565b91505092959194509250565b6000806040838503121561365657600080fd5b600061366485828601613269565b925050602061367585828601613497565b9150509250929050565b6000806000806080858703121561369557600080fd5b60006136a387828801613269565b94505060206136b487828801613497565b93505060406136c587828801613269565b92505060606136d687828801613497565b91505092959194509250565b6000602082840312156136f457600080fd5b600082013567ffffffffffffffff81111561370e57600080fd5b61371a848285016132a8565b91505092915050565b60006020828403121561373557600080fd5b600082015167ffffffffffffffff81111561374f57600080fd5b61375b8482850161332b565b91505092915050565b60006020828403121561377657600080fd5b6000613784848285016133ae565b91505092915050565b60006020828403121561379f57600080fd5b60006137ad848285016133c3565b91505092915050565b6000602082840312156137c857600080fd5b60006137d684828501613422565b91505092915050565b6000606082840312156137f157600080fd5b60006137ff84828501613437565b91505092915050565b60006020828403121561381a57600080fd5b6000613828848285016134ac565b91505092915050565b60008060008060006080868803121561384957600080fd5b600061385788828901613497565b955050602061386888828901613497565b945050604061387988828901613497565b935050606086013567ffffffffffffffff81111561389657600080fd5b6138a2888289016133d8565b92509250509295509295909350565b60006138bd83836138d8565b60208301905092915050565b6138d281614347565b82525050565b6138e1816142d1565b82525050565b6138f0816142d1565b82525050565b600061390182614265565b61390b8185614293565b935061391683614255565b8060005b8381101561394757815161392e88826138b1565b975061393983614286565b92505060018101905061391a565b5085935050505092915050565b61395d81614301565b82525050565b600061396f83856142b5565b935061397c83858461437d565b82840190509392505050565b600061399382614270565b61399d81856142a4565b93506139ad81856020860161438c565b6139b6816143bf565b840191505092915050565b60006139cc82614270565b6139d681856142b5565b93506139e681856020860161438c565b80840191505092915050565b60006139fd8261427b565b613a0781856142c0565b9350613a1781856020860161438c565b613a20816143bf565b840191505092915050565b6000613a38601b836142c0565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613a78601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c656400006000830152602082019050919050565b6000613ab8601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c656400006000830152602082019050919050565b6000613af86029836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613b5e6014836142c0565b91507f736166652d6d6174682d7375622d6661696c65640000000000000000000000006000830152602082019050919050565b6000613b9e601e836142c0565b91507f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c656400006000830152602082019050919050565b6000613bde6023836142c0565b91507f636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d66616960008301527f6c656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c44601e836142c0565b91507f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c656400006000830152602082019050919050565b6000613c84601d836142c0565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000613cc46019836142c0565b91507f636d706e642d6d67722d7472616e736665722d6661696c6564000000000000006000830152602082019050919050565b6000613d046000836142b5565b9150600082019050919050565b6000613d1e6020836142c0565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b6000613d5e601d836142c0565b91507f636c6561722d636f6c6c61746572616c2d73616d652d616464726573730000006000830152602082019050919050565b6000613d9e601e836142c0565b91507f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c656400006000830152602082019050919050565b6000613dde6017836142c0565b91507f636c6561722d646562742d73616d652d616464726573730000000000000000006000830152602082019050919050565b613e1a8161433d565b82525050565b6000613e2c82866139c1565b9150613e39828486613963565b9150819050949350505050565b6000613e5182613cf7565b9150819050919050565b6000602082019050613e7060008301846138e7565b92915050565b6000608082019050613e8b60008301876138c9565b613e9860208301866138e7565b613ea56040830185613e11565b8181036060830152613eb78184613988565b905095945050505050565b6000606082019050613ed760008301866138e7565b613ee460208301856138e7565b613ef16040830184613e11565b949350505050565b6000604082019050613f0e60008301856138e7565b613f1b6020830184613e11565b9392505050565b60006020820190508181036000830152613f3c81846138f6565b905092915050565b6000606082019050613f596000830186613954565b613f666020830185613954565b613f736040830184613954565b949350505050565b60006020820190508181036000830152613f9581846139f2565b905092915050565b60006020820190508181036000830152613fb681613a2b565b9050919050565b60006020820190508181036000830152613fd681613a6b565b9050919050565b60006020820190508181036000830152613ff681613aab565b9050919050565b6000602082019050818103600083015261401681613aeb565b9050919050565b6000602082019050818103600083015261403681613b51565b9050919050565b6000602082019050818103600083015261405681613b91565b9050919050565b6000602082019050818103600083015261407681613bd1565b9050919050565b6000602082019050818103600083015261409681613c37565b9050919050565b600060208201905081810360008301526140b681613c77565b9050919050565b600060208201905081810360008301526140d681613cb7565b9050919050565b600060208201905081810360008301526140f681613d11565b9050919050565b6000602082019050818103600083015261411681613d51565b9050919050565b6000602082019050818103600083015261413681613d91565b9050919050565b6000602082019050818103600083015261415681613dd1565b9050919050565b60006020820190506141726000830184613e11565b92915050565b600060408201905061418d6000830185613e11565b61419a6020830184613e11565b9392505050565b60006060820190506141b66000830186613e11565b6141c36020830185613e11565b6141d06040830184613e11565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156141fb57600080fd5b8060405250919050565b600067ffffffffffffffff82111561421c57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561424457600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006142dc8261431d565b9050919050565b60006142ee8261431d565b9050919050565b60008115159050919050565b6000819050919050565b6000614316826142d1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061435282614359565b9050919050565b60006143648261436b565b9050919050565b60006143768261431d565b9050919050565b82818337600083830152505050565b60005b838110156143aa57808201518184015260208101905061438f565b838111156143b9576000848401525b50505050565b6000601f19601f8301169050919050565b6143d9816142d1565b81146143e457600080fd5b50565b6143f0816142e3565b81146143fb57600080fd5b50565b614407816142f5565b811461441257600080fd5b50565b61441e81614301565b811461442957600080fd5b50565b6144358161430b565b811461444057600080fd5b50565b61444c8161433d565b811461445757600080fd5b5056fea365627a7a72315820bca4a210997ac10003242cfbaf0c3d19e28510725f51c9d56bc6118d8a896bbf6c6578706572696d656e74616cf564736f6c63430005100040", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveCToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"approveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrowThroughProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCTokenAddress\",\"type\":\"address\"}],\"name\":\"clearCollateralDust\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingDustAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCTokenAddress\",\"type\":\"address\"}],\"name\":\"clearDebtDust\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarketsAndApproveCTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalfThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"supplyCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supplyAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"borrowCToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"supplyETH\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"supplyETHAndBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyThroughProxy\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_loanAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"swapCollateralPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_loanAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"swapDebtPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeCompoundManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oldCTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"oldTokenUnderlyingDelta\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"swapOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeCompoundManager.sol\":\"DedgeCompoundManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICompoundPriceOracle.sol\":{\"keccak256\":\"0xb19ae717f5b05fbc0ffdf3a4b96cd71811071ab2d3c5f73ee8835541c5bd573b\",\"urls\":[\"bzz-raw://52efc7166851b50b539166f234babc41cf25a4cc2c5997c9bc3f801117b4ea47\",\"dweb:/ipfs/QmXv2P3p6adgTCHUMXdufESTbJEdbQ3DkLKRnsENRC1Dmx\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/compound/CompoundBase.sol\":{\"keccak256\":\"0xfe69c2a9adaca0cdcfb06df5a2a2d99b5fd2d507e85379d7e412e218c523583a\",\"urls\":[\"bzz-raw://525284cba89cdd1c6b146ec5774e284b6b0af8639cfad96c059e700a9e727ca2\",\"dweb:/ipfs/QmSBBvdmCWkfFscFKWK6oMYL7F4HQ2aZPxJhEX5p3W4ivp\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeCompoundManager.sol\":{\"keccak256\":\"0x40cf0894186b39884631af6e60f13fa4855d63742cc13fd29caaf4c9a5b55264\",\"urls\":[\"bzz-raw://f4549c40d3dcaa3bca353db65d8911b16fa9b27507f1d24b89a0ea61abbce621\",\"dweb:/ipfs/QmWQCPGiTkyZxUv8YYzW3NU5i4kv5wnXZH1xNLmPWgjZwt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50613409806100206000396000f3fe60806040526004361061014b5760003560e01c80637720cc87116100b6578063c04bea9b1161006f578063c04bea9b146102f8578063c29982381461030b578063d13b8c721461032b578063d2f70c401461033e578063d882dc6c1461035e578063f2b9fdb8146103715761014b565b80637720cc871461026c578063962941781461027f5780639a22a1b914610292578063abdb5ea8146102b2578063b14886ee146102c5578063ba59154f146102e55761014b565b806341ec5cc41161010857806341ec5cc4146101f85780634907b8fc1461020b5780634b8a35291461021357806359086a5e1461023357806367600cc21461024657806375d40945146102595761014b565b80630b4e0630146101505780631e9a69501461016557806324d1ea12146101785780632d8af543146101985780632f379b13146101b85780633dc4d99a146101d8575b600080fd5b61016361015e366004612a95565b610384565b005b610163610173366004612a95565b6104da565b34801561018457600080fd5b50610163610193366004612c06565b610582565b3480156101a457600080fd5b506101636101b3366004612b24565b6108b7565b3480156101c457600080fd5b506101636101d3366004612942565b6108cc565b3480156101e457600080fd5b506101636101f3366004612b24565b610c00565b610163610206366004612a95565b610c73565b610163610c85565b34801561021f57600080fd5b5061016361022e366004612a95565b610cef565b6101636102413660046129e7565b610d8a565b610163610254366004612a95565b610ec0565b610163610267366004612acf565b610ed5565b61016361027a3660046129e7565b610ee9565b61016361028d366004612a95565b610f24565b34801561029e57600080fd5b506101636102ad366004612a95565b610fbf565b6101636102c0366004612a95565b610fc9565b3480156102d157600080fd5b506101636102e0366004612c06565b6110ec565b6101636102f3366004612a95565b61138a565b610163610306366004612a34565b6113c4565b34801561031757600080fd5b50610163610326366004612b24565b611712565b610163610339366004612a34565b6117eb565b34801561034a57600080fd5b50610163610359366004612a95565b611ba1565b61016361036c366004612a95565b611cb8565b61016361037f366004612a95565b611cc2565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906103b39030906004016130fc565b60206040518083038186803b1580156103cb57600080fd5b505afa1580156103df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104039190810190612bac565b90506001600160a01b038316734ddc2d193948926d02f9b1fe9e1daa0718270ed5146104355761043533308585611ddb565b61043f8383611cc2565b6040516370a0823160e01b81526000906001600160a01b038516906370a082319061046e9030906004016130fc565b60206040518083038186803b15801561048657600080fd5b505afa15801561049a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104be9190810190612bac565b90506104d484336104cf8486611eef565b611f1c565b50505050565b60405163db006a7560e01b81526001600160a01b0383169063db006a75906105069084906004016132a4565b602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105589190810190612bac565b1561057e5760405162461bcd60e51b8152600401610575906131e4565b60405180910390fd5b5050565b61058a61272f565b61059682840184612be8565b805160208201516040830151929350909160006105c9886105bd8c8c63ffffffff6120ae16565b9063ffffffff6120ae16565b9050836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561060457600080fd5b505afa158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061063c9190810190612924565b6001600160a01b0316836001600160a01b031614156106645761065f838b610fc9565b610776565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561069f57600080fd5b505afa1580156106b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106d79190810190612924565b905060006106e5828d6120da565b60405163095ea7b360e01b81529091506001600160a01b0383169063095ea7b390610716908890859060040161316c565b602060405180830381600087803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107689190810190612b8e565b506107738582610fc9565b50505b836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156107af57600080fd5b505afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107e79190810190612924565b6001600160a01b0316826001600160a01b0316141561080f5761080a8282610cef565b6108ab565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561084a57600080fd5b505afa15801561085e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108829190810190612924565b9050600061089082846120e8565b905061089c8482610cef565b6108a782828561216e565b5050505b50505050505050505050565b6108c081611712565b6108c981610c00565b50565b60008590506000816001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561090c57600080fd5b505afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109449190810190612924565b6001600160a01b0316866001600160a01b031614156109645750836109e1565b6109de866001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a057600080fd5b505afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109d89190810190612924565b8661228c565b90505b6060896040516020016109f491906130fc565b60408051601f1981840301815290829052610a1591879087906020016130d8565b60405160208183030381529060405290506000836001600160a01b0316633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6157600080fd5b505afa158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a999190810190612924565b6001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad157600080fd5b505afa158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b099190810190612924565b9050610b158a826122c2565b806001600160a01b0316635cffe9de8b866001600160a01b03166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5e57600080fd5b505afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b969190810190612924565b86866040518563ffffffff1660e01b8152600401610bb7949392919061310a565b600060405180830381600087803b158015610bd157600080fd5b505af1158015610be5573d6000803e3d6000fd5b50505050610bf38a82612490565b5050505050505050505050565b60005b815181101561057e57734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316828281518110610c3657fe5b60200260200101516001600160a01b031614610c6b57610c6b828281518110610c5b57fe5b6020026020010151600019611ba1565b600101610c03565b610c7b610c85565b61057e8282610cef565b734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b5050505050565b60405163317afabb60e21b81526001600160a01b0383169063c5ebeaec90610d1b9084906004016132a4565b602060405180830381600087803b158015610d3557600080fd5b505af1158015610d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d6d9190810190612bac565b1561057e5760405162461bcd60e51b8152600401610575906131d4565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed51415610e145760405163e597461960e01b81526001600160a01b0383169063e5974619908390610ddd9087906004016130fc565b6000604051808303818588803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b5050505050610ebb565b610e1e8282611ba1565b6040516304c11f0360e31b81526001600160a01b03831690632608f81890610e4c908690859060040161316c565b602060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e9e9190810190612bac565b15610ebb5760405162461bcd60e51b815260040161057590613224565b505050565b610eca8282610f24565b61057e823383611f1c565b610edf8484611cc2565b6104d48282610cef565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed514610f1957610f1933308484611ddb565b610ebb838383610d8a565b60405163852a12e360e01b81526001600160a01b0383169063852a12e390610f509084906004016132a4565b602060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fa29190810190612bac565b1561057e5760405162461bcd60e51b8152600401610575906131f4565b610eca8282610cef565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed5141561104757816001600160a01b0316634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561102957600080fd5b505af115801561103d573d6000803e3d6000fd5b505050505061057e565b6110518282611ba1565b60405163073a938160e11b81526001600160a01b03831690630e7527029061107d9084906004016132a4565b602060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110cf9190810190612bac565b1561057e5760405162461bcd60e51b815260040161057590613244565b6110f461272f565b61110082840184612be8565b80516020820151604083015192935090916000611133886111278c8c63ffffffff61256016565b9063ffffffff61256016565b9050836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561116e57600080fd5b505afa158015611182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111a69190810190612924565b6001600160a01b0316826001600160a01b031614156111ce576111c98282611cc2565b61125e565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561120957600080fd5b505afa15801561121d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112419190810190612924565b9050600061124f82846120da565b905061125b8482611cc2565b50505b836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b505afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112cf9190810190612924565b6001600160a01b0316836001600160a01b031614156112f25761080a838b610f24565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561132d57600080fd5b505afa158015611341573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113659190810190612924565b90506000611373828d6120e8565b905061137f8582610f24565b6108a782828e61216e565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed5146113ba576113ba33308484611ddb565b61057e8282610fc9565b806001600160a01b0316836001600160a01b031614156113f65760405162461bcd60e51b815260040161057590613274565b6000846114038585610f24565b806001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561143c57600080fd5b505afa158015611450573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114749190810190612924565b6001600160a01b0316856001600160a01b0316141561150e57611507836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b505afa1580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115019190810190612924565b856120da565b9150611700565b806001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561154757600080fd5b505afa15801561155b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157f9190810190612924565b6001600160a01b0316836001600160a01b0316141561161257611507856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d457600080fd5b505afa1580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061160c9190810190612924565b856125a2565b6116fd856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164e57600080fd5b505afa158015611662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116869190810190612924565b846001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156116bf57600080fd5b505afa1580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116f79190810190612924565b866125b0565b91505b61170a8383611cc2565b505050505050565b604051631853304760e31b8152606090733d9819210a31b4961b30ef54be2aed79b9c9cd3b9063c29982389061174c908590600401613187565b600060405180830381600087803b15801561176657600080fd5b505af115801561177a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117a29190810190612b59565b905060005b8151811015610ebb578181815181106117bc57fe5b60200260200101516000146117e35760405162461bcd60e51b815260040161057590613214565b6001016117a7565b806001600160a01b0316836001600160a01b0316141561181d5760405162461bcd60e51b815260040161057590613294565b60008490506000806000836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561186057600080fd5b505afa158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118989190810190612924565b6001600160a01b0316876001600160a01b0316141561194b57846001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ea57600080fd5b505afa1580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119229190810190612924565b905061192e81876120e8565b925061193a8584610cef565b61194581848861216e565b50611b8d565b836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561198457600080fd5b505afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119bc9190810190612924565b6001600160a01b0316856001600160a01b03161415611a6957866001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0e57600080fd5b505afa158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a469190810190612924565b9150611a52828761228c565b9250611a5e8584610cef565b6119458284886125c7565b866001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611aa257600080fd5b505afa158015611ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ada9190810190612924565b9150846001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1557600080fd5b505afa158015611b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b4d9190810190612924565b90506000611b5b838861228c565b9050611b6782826120e8565b9350611b738685610cef565b611b7e82858361216e565b50611b8a8382896125c7565b50505b611b978787610fc9565b5050505050505050565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bdc57600080fd5b505afa158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c149190810190612924565b60405163095ea7b360e01b81529091506001600160a01b0382169063095ea7b390611c45908690869060040161316c565b602060405180830381600087803b158015611c5f57600080fd5b505af1158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c979190810190612b8e565b1515600114610ebb5760405162461bcd60e51b815260040161057590613264565b610eca82826104da565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed51415611d3657734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561102957600080fd5b611d408282611ba1565b60405163140e25ad60e31b81526001600160a01b0383169063a0712d6890611d6c9084906004016132a4565b602060405180830381600087803b158015611d8657600080fd5b505af1158015611d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dbe9190810190612bac565b1561057e5760405162461bcd60e51b815260040161057590613284565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1657600080fd5b505afa158015611e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e4e9190810190612924565b6040516323b872dd60e01b81529091506001600160a01b038216906323b872dd90611e8190889088908790600401613144565b602060405180830381600087803b158015611e9b57600080fd5b505af1158015611eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ed39190810190612b8e565b610ce85760405162461bcd60e51b815260040161057590613234565b600082821115611f115760405162461bcd60e51b815260040161057590613204565b508082035b92915050565b6001600160a01b038316734ddc2d193948926d02f9b1fe9e1daa0718270ed51415611fa257816001600160a01b031681604051611f58906130f1565b60006040518083038185875af1925050503d8060008114611f95576040519150601f19603f3d011682016040523d82523d6000602084013e611f9a565b606091505b505050610ebb565b826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611fdb57600080fd5b505afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120139190810190612924565b6001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040161204092919061316c565b602060405180830381600087803b15801561205a57600080fd5b505af115801561206e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120929190810190612b8e565b610ebb5760405162461bcd60e51b815260040161057590613254565b6000828201838110156120d35760405162461bcd60e51b8152600401610575906131c4565b9392505050565b60006120d3838360016125c7565b60006120f383612655565b6001600160a01b0316632640f62c836040518263ffffffff1660e01b815260040161211e91906132a4565b60206040518083038186803b15801561213657600080fd5b505afa15801561214a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120d39190810190612bac565b60008061217a85612655565b60405163095ea7b360e01b81529091506001600160a01b0386169063095ea7b3906121ab908490889060040161316c565b602060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121fd9190810190612b8e565b506040516395e3c50b60e01b81526001600160a01b038216906395e3c50b906122319087908790603c420190600401613198565b602060405180830381600087803b15801561224b57600080fd5b505af115801561225f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122839190810190612bac565b95945050505050565b600061229783612655565b6001600160a01b03166359e94862836040518263ffffffff1660e01b815260040161211e91906132a4565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156122fd57600080fd5b505afa158015612311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123359190810190612bca565b9050806001600160a01b031663f0217ce58360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561239257600080fd5b505afa1580156123a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123ca9190810190612bac565b846001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561240357600080fd5b505afa158015612417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061243b9190810190612bac565b6040518463ffffffff1660e01b815260040161245993929190613198565b600060405180830381600087803b15801561247357600080fd5b505af1158015612487573d6000803e3d6000fd5b50505050505050565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124cb57600080fd5b505afa1580156124df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125039190810190612bca565b9050806001600160a01b03166379d88d878360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561239257600080fd5b60006120d383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126df565b60006120d38383600161216e565b60006125bf848484600161270b565b949350505050565b60006125d284612655565b6001600160a01b031663f39b5b9b848442603c016040518463ffffffff1660e01b81526004016126039291906132b2565b6020604051808303818588803b15801561261c57600080fd5b505af1158015612630573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506125bf9190810190612bac565b6040516303795fb160e11b815260009073c0a47dfe034b400b47bdad5fecda2621de6c4d95906306f2bf629061268f9085906004016130fc565b60206040518083038186803b1580156126a757600080fd5b505afa1580156126bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f169190810190612924565b600081848411156127035760405162461bcd60e51b815260040161057591906131b3565b505050900390565b60008061271886856125a2565b90506127258582856125c7565b9695505050505050565b604080516060810182526000808252602082018190529181019190915290565b8035611f1681613397565b8051611f1681613397565b600082601f83011261277657600080fd5b8135612789612784826132e7565b6132c0565b915081818352602084019350602081019050838560208402820111156127ae57600080fd5b60005b838110156127da57816127c4888261274f565b84525060209283019291909101906001016127b1565b5050505092915050565b600082601f8301126127f557600080fd5b8151612803612784826132e7565b9150818183526020840193506020810190508385602084028201111561282857600080fd5b60005b838110156127da578161283e888261285f565b845250602092830192919091019060010161282b565b8051611f16816133ab565b8051611f16816133b4565b60008083601f84011261287c57600080fd5b50813567ffffffffffffffff81111561289457600080fd5b6020830191508360018202830111156128ac57600080fd5b9250929050565b8051611f16816133bd565b6000606082840312156128d057600080fd5b6128da60606132c0565b905060006128e8848461274f565b82525060206128f98484830161274f565b602083015250604061290d8482850161274f565b60408301525092915050565b8035611f16816133b4565b60006020828403121561293657600080fd5b60006125bf848461275a565b600080600080600080600060c0888a03121561295d57600080fd5b60006129698a8a61274f565b975050602061297a8a828b0161274f565b965050604061298b8a828b0161274f565b955050606061299c8a828b0161274f565b94505060806129ad8a828b01612919565b93505060a088013567ffffffffffffffff8111156129ca57600080fd5b6129d68a828b0161286a565b925092505092959891949750929550565b6000806000606084860312156129fc57600080fd5b6000612a08868661274f565b9350506020612a198682870161274f565b9250506040612a2a86828701612919565b9150509250925092565b60008060008060808587031215612a4a57600080fd5b6000612a56878761274f565b9450506020612a678782880161274f565b9350506040612a7887828801612919565b9250506060612a898782880161274f565b91505092959194509250565b60008060408385031215612aa857600080fd5b6000612ab4858561274f565b9250506020612ac585828601612919565b9150509250929050565b60008060008060808587031215612ae557600080fd5b6000612af1878761274f565b9450506020612b0287828801612919565b9350506040612b138782880161274f565b9250506060612a8987828801612919565b600060208284031215612b3657600080fd5b813567ffffffffffffffff811115612b4d57600080fd5b6125bf84828501612765565b600060208284031215612b6b57600080fd5b815167ffffffffffffffff811115612b8257600080fd5b6125bf848285016127e4565b600060208284031215612ba057600080fd5b60006125bf8484612854565b600060208284031215612bbe57600080fd5b60006125bf848461285f565b600060208284031215612bdc57600080fd5b60006125bf84846128b3565b600060608284031215612bfa57600080fd5b60006125bf84846128be565b600080600080600060808688031215612c1e57600080fd5b6000612c2a8888612919565b9550506020612c3b88828901612919565b9450506040612c4c88828901612919565b935050606086013567ffffffffffffffff811115612c6957600080fd5b612c758882890161286a565b92509250509295509295909350565b6000612c908383612ca7565b505060200190565b612ca18161334a565b82525050565b612ca181613320565b6000612cbb8261330e565b612cc58185613312565b9350612cd083613308565b8060005b83811015612cfe578151612ce88882612c84565b9750612cf383613308565b925050600101612cd4565b509495945050505050565b612ca181613330565b6000612d1e838561331b565b9350612d2b838584613355565b50500190565b6000612d3c8261330e565b612d468185613312565b9350612d56818560208601613361565b612d5f8161338d565b9093019392505050565b6000612d748261330e565b612d7e818561331b565b9350612d8e818560208601613361565b9290920192915050565b6000612da5601b83613312565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000612dde601e83613312565b7f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c65640000815260200192915050565b6000612e17601e83613312565b7f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c65640000815260200192915050565b6000612e50602983613312565b7f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79698152681b99cb59985a5b195960ba1b602082015260400192915050565b6000612e9b601483613312565b731cd859994b5b585d1a0b5cdd588b59985a5b195960621b815260200192915050565b6000612ecb601e83613312565b7f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c65640000815260200192915050565b6000612f04602383613312565b7f636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661698152621b195960ea1b602082015260400192915050565b6000612f49601e83613312565b7f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c65640000815260200192915050565b6000612f82601d83613312565b7f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c6564000000815260200192915050565b6000612fbb601983613312565b7f636d706e642d6d67722d7472616e736665722d6661696c656400000000000000815260200192915050565b6000611f1660008361331b565b6000613001602083613312565b7f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c6564815260200192915050565b600061303a601d83613312565b7f636c6561722d636f6c6c61746572616c2d73616d652d61646472657373000000815260200192915050565b6000613073601e83613312565b7f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c65640000815260200192915050565b60006130ac601783613312565b7f636c6561722d646562742d73616d652d61646472657373000000000000000000815260200192915050565b60006130e48286612d69565b9150612283828486612d12565b6000611f1682612fe7565b60208101611f168284612ca7565b608081016131188287612c98565b6131256020830186612ca7565b6131326040830185612d09565b81810360608301526127258184612d31565b606081016131528286612ca7565b61315f6020830185612ca7565b6125bf6040830184612d09565b6040810161317a8285612ca7565b6120d36020830184612d09565b602080825281016120d38184612cb0565b606081016131a68286612d09565b61315f6020830185612d09565b602080825281016120d38184612d31565b60208082528101611f1681612d98565b60208082528101611f1681612dd1565b60208082528101611f1681612e0a565b60208082528101611f1681612e43565b60208082528101611f1681612e8e565b60208082528101611f1681612ebe565b60208082528101611f1681612ef7565b60208082528101611f1681612f3c565b60208082528101611f1681612f75565b60208082528101611f1681612fae565b60208082528101611f1681612ff4565b60208082528101611f168161302d565b60208082528101611f1681613066565b60208082528101611f168161309f565b60208101611f168284612d09565b6040810161317a8285612d09565b60405181810167ffffffffffffffff811182821017156132df57600080fd5b604052919050565b600067ffffffffffffffff8211156132fe57600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b919050565b6000611f168261333e565b151590565b90565b6000611f1682613320565b6001600160a01b031690565b6000611f1682613333565b82818337506000910152565b60005b8381101561337c578181015183820152602001613364565b838111156104d45750506000910152565b601f01601f191690565b6133a081613320565b81146108c957600080fd5b6133a08161332b565b6133a081613330565b6133a08161333356fea365627a7a72315820ce0b52e9b5c82f957a5966bc89c1e5ca746205ba9274035482b2834a0682c1bb6c6578706572696d656e74616cf564736f6c63430005100040", + "deployedBytecode": "0x60806040526004361061014b5760003560e01c80637720cc87116100b6578063c04bea9b1161006f578063c04bea9b146102f8578063c29982381461030b578063d13b8c721461032b578063d2f70c401461033e578063d882dc6c1461035e578063f2b9fdb8146103715761014b565b80637720cc871461026c578063962941781461027f5780639a22a1b914610292578063abdb5ea8146102b2578063b14886ee146102c5578063ba59154f146102e55761014b565b806341ec5cc41161010857806341ec5cc4146101f85780634907b8fc1461020b5780634b8a35291461021357806359086a5e1461023357806367600cc21461024657806375d40945146102595761014b565b80630b4e0630146101505780631e9a69501461016557806324d1ea12146101785780632d8af543146101985780632f379b13146101b85780633dc4d99a146101d8575b600080fd5b61016361015e366004612a95565b610384565b005b610163610173366004612a95565b6104da565b34801561018457600080fd5b50610163610193366004612c06565b610582565b3480156101a457600080fd5b506101636101b3366004612b24565b6108b7565b3480156101c457600080fd5b506101636101d3366004612942565b6108cc565b3480156101e457600080fd5b506101636101f3366004612b24565b610c00565b610163610206366004612a95565b610c73565b610163610c85565b34801561021f57600080fd5b5061016361022e366004612a95565b610cef565b6101636102413660046129e7565b610d8a565b610163610254366004612a95565b610ec0565b610163610267366004612acf565b610ed5565b61016361027a3660046129e7565b610ee9565b61016361028d366004612a95565b610f24565b34801561029e57600080fd5b506101636102ad366004612a95565b610fbf565b6101636102c0366004612a95565b610fc9565b3480156102d157600080fd5b506101636102e0366004612c06565b6110ec565b6101636102f3366004612a95565b61138a565b610163610306366004612a34565b6113c4565b34801561031757600080fd5b50610163610326366004612b24565b611712565b610163610339366004612a34565b6117eb565b34801561034a57600080fd5b50610163610359366004612a95565b611ba1565b61016361036c366004612a95565b611cb8565b61016361037f366004612a95565b611cc2565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906103b39030906004016130fc565b60206040518083038186803b1580156103cb57600080fd5b505afa1580156103df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104039190810190612bac565b90506001600160a01b038316734ddc2d193948926d02f9b1fe9e1daa0718270ed5146104355761043533308585611ddb565b61043f8383611cc2565b6040516370a0823160e01b81526000906001600160a01b038516906370a082319061046e9030906004016130fc565b60206040518083038186803b15801561048657600080fd5b505afa15801561049a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104be9190810190612bac565b90506104d484336104cf8486611eef565b611f1c565b50505050565b60405163db006a7560e01b81526001600160a01b0383169063db006a75906105069084906004016132a4565b602060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105589190810190612bac565b1561057e5760405162461bcd60e51b8152600401610575906131e4565b60405180910390fd5b5050565b61058a61272f565b61059682840184612be8565b805160208201516040830151929350909160006105c9886105bd8c8c63ffffffff6120ae16565b9063ffffffff6120ae16565b9050836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561060457600080fd5b505afa158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061063c9190810190612924565b6001600160a01b0316836001600160a01b031614156106645761065f838b610fc9565b610776565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561069f57600080fd5b505afa1580156106b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106d79190810190612924565b905060006106e5828d6120da565b60405163095ea7b360e01b81529091506001600160a01b0383169063095ea7b390610716908890859060040161316c565b602060405180830381600087803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107689190810190612b8e565b506107738582610fc9565b50505b836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b1580156107af57600080fd5b505afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107e79190810190612924565b6001600160a01b0316826001600160a01b0316141561080f5761080a8282610cef565b6108ab565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561084a57600080fd5b505afa15801561085e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108829190810190612924565b9050600061089082846120e8565b905061089c8482610cef565b6108a782828561216e565b5050505b50505050505050505050565b6108c081611712565b6108c981610c00565b50565b60008590506000816001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561090c57600080fd5b505afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109449190810190612924565b6001600160a01b0316866001600160a01b031614156109645750836109e1565b6109de866001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a057600080fd5b505afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109d89190810190612924565b8661228c565b90505b6060896040516020016109f491906130fc565b60408051601f1981840301815290829052610a1591879087906020016130d8565b60405160208183030381529060405290506000836001600160a01b0316633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6157600080fd5b505afa158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a999190810190612924565b6001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ad157600080fd5b505afa158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b099190810190612924565b9050610b158a826122c2565b806001600160a01b0316635cffe9de8b866001600160a01b03166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b158015610b5e57600080fd5b505afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b969190810190612924565b86866040518563ffffffff1660e01b8152600401610bb7949392919061310a565b600060405180830381600087803b158015610bd157600080fd5b505af1158015610be5573d6000803e3d6000fd5b50505050610bf38a82612490565b5050505050505050505050565b60005b815181101561057e57734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316828281518110610c3657fe5b60200260200101516001600160a01b031614610c6b57610c6b828281518110610c5b57fe5b6020026020010151600019611ba1565b600101610c03565b610c7b610c85565b61057e8282610cef565b734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316631249c58b346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b5050505050565b60405163317afabb60e21b81526001600160a01b0383169063c5ebeaec90610d1b9084906004016132a4565b602060405180830381600087803b158015610d3557600080fd5b505af1158015610d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d6d9190810190612bac565b1561057e5760405162461bcd60e51b8152600401610575906131d4565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed51415610e145760405163e597461960e01b81526001600160a01b0383169063e5974619908390610ddd9087906004016130fc565b6000604051808303818588803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b5050505050610ebb565b610e1e8282611ba1565b6040516304c11f0360e31b81526001600160a01b03831690632608f81890610e4c908690859060040161316c565b602060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e9e9190810190612bac565b15610ebb5760405162461bcd60e51b815260040161057590613224565b505050565b610eca8282610f24565b61057e823383611f1c565b610edf8484611cc2565b6104d48282610cef565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed514610f1957610f1933308484611ddb565b610ebb838383610d8a565b60405163852a12e360e01b81526001600160a01b0383169063852a12e390610f509084906004016132a4565b602060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fa29190810190612bac565b1561057e5760405162461bcd60e51b8152600401610575906131f4565b610eca8282610cef565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed5141561104757816001600160a01b0316634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561102957600080fd5b505af115801561103d573d6000803e3d6000fd5b505050505061057e565b6110518282611ba1565b60405163073a938160e11b81526001600160a01b03831690630e7527029061107d9084906004016132a4565b602060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110cf9190810190612bac565b1561057e5760405162461bcd60e51b815260040161057590613244565b6110f461272f565b61110082840184612be8565b80516020820151604083015192935090916000611133886111278c8c63ffffffff61256016565b9063ffffffff61256016565b9050836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561116e57600080fd5b505afa158015611182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111a69190810190612924565b6001600160a01b0316826001600160a01b031614156111ce576111c98282611cc2565b61125e565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561120957600080fd5b505afa15801561121d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112419190810190612924565b9050600061124f82846120da565b905061125b8482611cc2565b50505b836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b505afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112cf9190810190612924565b6001600160a01b0316836001600160a01b031614156112f25761080a838b610f24565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561132d57600080fd5b505afa158015611341573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113659190810190612924565b90506000611373828d6120e8565b905061137f8582610f24565b6108a782828e61216e565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed5146113ba576113ba33308484611ddb565b61057e8282610fc9565b806001600160a01b0316836001600160a01b031614156113f65760405162461bcd60e51b815260040161057590613274565b6000846114038585610f24565b806001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561143c57600080fd5b505afa158015611450573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114749190810190612924565b6001600160a01b0316856001600160a01b0316141561150e57611507836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c957600080fd5b505afa1580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115019190810190612924565b856120da565b9150611700565b806001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561154757600080fd5b505afa15801561155b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061157f9190810190612924565b6001600160a01b0316836001600160a01b0316141561161257611507856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d457600080fd5b505afa1580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061160c9190810190612924565b856125a2565b6116fd856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561164e57600080fd5b505afa158015611662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116869190810190612924565b846001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156116bf57600080fd5b505afa1580156116d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116f79190810190612924565b866125b0565b91505b61170a8383611cc2565b505050505050565b604051631853304760e31b8152606090733d9819210a31b4961b30ef54be2aed79b9c9cd3b9063c29982389061174c908590600401613187565b600060405180830381600087803b15801561176657600080fd5b505af115801561177a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117a29190810190612b59565b905060005b8151811015610ebb578181815181106117bc57fe5b60200260200101516000146117e35760405162461bcd60e51b815260040161057590613214565b6001016117a7565b806001600160a01b0316836001600160a01b0316141561181d5760405162461bcd60e51b815260040161057590613294565b60008490506000806000836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561186057600080fd5b505afa158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118989190810190612924565b6001600160a01b0316876001600160a01b0316141561194b57846001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156118ea57600080fd5b505afa1580156118fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119229190810190612924565b905061192e81876120e8565b925061193a8584610cef565b61194581848861216e565b50611b8d565b836001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561198457600080fd5b505afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119bc9190810190612924565b6001600160a01b0316856001600160a01b03161415611a6957866001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0e57600080fd5b505afa158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a469190810190612924565b9150611a52828761228c565b9250611a5e8584610cef565b6119458284886125c7565b866001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611aa257600080fd5b505afa158015611ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ada9190810190612924565b9150846001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1557600080fd5b505afa158015611b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b4d9190810190612924565b90506000611b5b838861228c565b9050611b6782826120e8565b9350611b738685610cef565b611b7e82858361216e565b50611b8a8382896125c7565b50505b611b978787610fc9565b5050505050505050565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bdc57600080fd5b505afa158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c149190810190612924565b60405163095ea7b360e01b81529091506001600160a01b0382169063095ea7b390611c45908690869060040161316c565b602060405180830381600087803b158015611c5f57600080fd5b505af1158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c979190810190612b8e565b1515600114610ebb5760405162461bcd60e51b815260040161057590613264565b610eca82826104da565b6001600160a01b038216734ddc2d193948926d02f9b1fe9e1daa0718270ed51415611d3657734ddc2d193948926d02f9b1fe9e1daa0718270ed56001600160a01b0316631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561102957600080fd5b611d408282611ba1565b60405163140e25ad60e31b81526001600160a01b0383169063a0712d6890611d6c9084906004016132a4565b602060405180830381600087803b158015611d8657600080fd5b505af1158015611d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dbe9190810190612bac565b1561057e5760405162461bcd60e51b815260040161057590613284565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1657600080fd5b505afa158015611e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e4e9190810190612924565b6040516323b872dd60e01b81529091506001600160a01b038216906323b872dd90611e8190889088908790600401613144565b602060405180830381600087803b158015611e9b57600080fd5b505af1158015611eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ed39190810190612b8e565b610ce85760405162461bcd60e51b815260040161057590613234565b600082821115611f115760405162461bcd60e51b815260040161057590613204565b508082035b92915050565b6001600160a01b038316734ddc2d193948926d02f9b1fe9e1daa0718270ed51415611fa257816001600160a01b031681604051611f58906130f1565b60006040518083038185875af1925050503d8060008114611f95576040519150601f19603f3d011682016040523d82523d6000602084013e611f9a565b606091505b505050610ebb565b826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611fdb57600080fd5b505afa158015611fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120139190810190612924565b6001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040161204092919061316c565b602060405180830381600087803b15801561205a57600080fd5b505af115801561206e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120929190810190612b8e565b610ebb5760405162461bcd60e51b815260040161057590613254565b6000828201838110156120d35760405162461bcd60e51b8152600401610575906131c4565b9392505050565b60006120d3838360016125c7565b60006120f383612655565b6001600160a01b0316632640f62c836040518263ffffffff1660e01b815260040161211e91906132a4565b60206040518083038186803b15801561213657600080fd5b505afa15801561214a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120d39190810190612bac565b60008061217a85612655565b60405163095ea7b360e01b81529091506001600160a01b0386169063095ea7b3906121ab908490889060040161316c565b602060405180830381600087803b1580156121c557600080fd5b505af11580156121d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121fd9190810190612b8e565b506040516395e3c50b60e01b81526001600160a01b038216906395e3c50b906122319087908790603c420190600401613198565b602060405180830381600087803b15801561224b57600080fd5b505af115801561225f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122839190810190612bac565b95945050505050565b600061229783612655565b6001600160a01b03166359e94862836040518263ffffffff1660e01b815260040161211e91906132a4565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156122fd57600080fd5b505afa158015612311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123359190810190612bca565b9050806001600160a01b031663f0217ce58360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561239257600080fd5b505afa1580156123a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123ca9190810190612bac565b846001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561240357600080fd5b505afa158015612417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061243b9190810190612bac565b6040518463ffffffff1660e01b815260040161245993929190613198565b600060405180830381600087803b15801561247357600080fd5b505af1158015612487573d6000803e3d6000fd5b50505050505050565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124cb57600080fd5b505afa1580156124df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125039190810190612bca565b9050806001600160a01b03166379d88d878360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561239257600080fd5b60006120d383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126df565b60006120d38383600161216e565b60006125bf848484600161270b565b949350505050565b60006125d284612655565b6001600160a01b031663f39b5b9b848442603c016040518463ffffffff1660e01b81526004016126039291906132b2565b6020604051808303818588803b15801561261c57600080fd5b505af1158015612630573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052506125bf9190810190612bac565b6040516303795fb160e11b815260009073c0a47dfe034b400b47bdad5fecda2621de6c4d95906306f2bf629061268f9085906004016130fc565b60206040518083038186803b1580156126a757600080fd5b505afa1580156126bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f169190810190612924565b600081848411156127035760405162461bcd60e51b815260040161057591906131b3565b505050900390565b60008061271886856125a2565b90506127258582856125c7565b9695505050505050565b604080516060810182526000808252602082018190529181019190915290565b8035611f1681613397565b8051611f1681613397565b600082601f83011261277657600080fd5b8135612789612784826132e7565b6132c0565b915081818352602084019350602081019050838560208402820111156127ae57600080fd5b60005b838110156127da57816127c4888261274f565b84525060209283019291909101906001016127b1565b5050505092915050565b600082601f8301126127f557600080fd5b8151612803612784826132e7565b9150818183526020840193506020810190508385602084028201111561282857600080fd5b60005b838110156127da578161283e888261285f565b845250602092830192919091019060010161282b565b8051611f16816133ab565b8051611f16816133b4565b60008083601f84011261287c57600080fd5b50813567ffffffffffffffff81111561289457600080fd5b6020830191508360018202830111156128ac57600080fd5b9250929050565b8051611f16816133bd565b6000606082840312156128d057600080fd5b6128da60606132c0565b905060006128e8848461274f565b82525060206128f98484830161274f565b602083015250604061290d8482850161274f565b60408301525092915050565b8035611f16816133b4565b60006020828403121561293657600080fd5b60006125bf848461275a565b600080600080600080600060c0888a03121561295d57600080fd5b60006129698a8a61274f565b975050602061297a8a828b0161274f565b965050604061298b8a828b0161274f565b955050606061299c8a828b0161274f565b94505060806129ad8a828b01612919565b93505060a088013567ffffffffffffffff8111156129ca57600080fd5b6129d68a828b0161286a565b925092505092959891949750929550565b6000806000606084860312156129fc57600080fd5b6000612a08868661274f565b9350506020612a198682870161274f565b9250506040612a2a86828701612919565b9150509250925092565b60008060008060808587031215612a4a57600080fd5b6000612a56878761274f565b9450506020612a678782880161274f565b9350506040612a7887828801612919565b9250506060612a898782880161274f565b91505092959194509250565b60008060408385031215612aa857600080fd5b6000612ab4858561274f565b9250506020612ac585828601612919565b9150509250929050565b60008060008060808587031215612ae557600080fd5b6000612af1878761274f565b9450506020612b0287828801612919565b9350506040612b138782880161274f565b9250506060612a8987828801612919565b600060208284031215612b3657600080fd5b813567ffffffffffffffff811115612b4d57600080fd5b6125bf84828501612765565b600060208284031215612b6b57600080fd5b815167ffffffffffffffff811115612b8257600080fd5b6125bf848285016127e4565b600060208284031215612ba057600080fd5b60006125bf8484612854565b600060208284031215612bbe57600080fd5b60006125bf848461285f565b600060208284031215612bdc57600080fd5b60006125bf84846128b3565b600060608284031215612bfa57600080fd5b60006125bf84846128be565b600080600080600060808688031215612c1e57600080fd5b6000612c2a8888612919565b9550506020612c3b88828901612919565b9450506040612c4c88828901612919565b935050606086013567ffffffffffffffff811115612c6957600080fd5b612c758882890161286a565b92509250509295509295909350565b6000612c908383612ca7565b505060200190565b612ca18161334a565b82525050565b612ca181613320565b6000612cbb8261330e565b612cc58185613312565b9350612cd083613308565b8060005b83811015612cfe578151612ce88882612c84565b9750612cf383613308565b925050600101612cd4565b509495945050505050565b612ca181613330565b6000612d1e838561331b565b9350612d2b838584613355565b50500190565b6000612d3c8261330e565b612d468185613312565b9350612d56818560208601613361565b612d5f8161338d565b9093019392505050565b6000612d748261330e565b612d7e818561331b565b9350612d8e818560208601613361565b9290920192915050565b6000612da5601b83613312565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000612dde601e83613312565b7f636d706e642d6d67722d63746f6b656e2d626f72726f772d6661696c65640000815260200192915050565b6000612e17601e83613312565b7f636d706e642d6d67722d63746f6b656e2d72656465656d2d6661696c65640000815260200192915050565b6000612e50602983613312565b7f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79698152681b99cb59985a5b195960ba1b602082015260400192915050565b6000612e9b601483613312565b731cd859994b5b585d1a0b5cdd588b59985a5b195960621b815260200192915050565b6000612ecb601e83613312565b7f636d706e642d6d67722d656e7465722d6d61726b6574732d6661696c65640000815260200192915050565b6000612f04602383613312565b7f636d706e642d6d67722d63746f6b656e2d7265706179626568616c662d6661698152621b195960ea1b602082015260400192915050565b6000612f49601e83613312565b7f636d706e642d6d67722d7472616e736665722d66726f6d2d6661696c65640000815260200192915050565b6000612f82601d83613312565b7f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c6564000000815260200192915050565b6000612fbb601983613312565b7f636d706e642d6d67722d7472616e736665722d6661696c656400000000000000815260200192915050565b6000611f1660008361331b565b6000613001602083613312565b7f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c6564815260200192915050565b600061303a601d83613312565b7f636c6561722d636f6c6c61746572616c2d73616d652d61646472657373000000815260200192915050565b6000613073601e83613312565b7f636d706e642d6d67722d63746f6b656e2d737570706c792d6661696c65640000815260200192915050565b60006130ac601783613312565b7f636c6561722d646562742d73616d652d61646472657373000000000000000000815260200192915050565b60006130e48286612d69565b9150612283828486612d12565b6000611f1682612fe7565b60208101611f168284612ca7565b608081016131188287612c98565b6131256020830186612ca7565b6131326040830185612d09565b81810360608301526127258184612d31565b606081016131528286612ca7565b61315f6020830185612ca7565b6125bf6040830184612d09565b6040810161317a8285612ca7565b6120d36020830184612d09565b602080825281016120d38184612cb0565b606081016131a68286612d09565b61315f6020830185612d09565b602080825281016120d38184612d31565b60208082528101611f1681612d98565b60208082528101611f1681612dd1565b60208082528101611f1681612e0a565b60208082528101611f1681612e43565b60208082528101611f1681612e8e565b60208082528101611f1681612ebe565b60208082528101611f1681612ef7565b60208082528101611f1681612f3c565b60208082528101611f1681612f75565b60208082528101611f1681612fae565b60208082528101611f1681612ff4565b60208082528101611f168161302d565b60208082528101611f1681613066565b60208082528101611f168161309f565b60208101611f168284612d09565b6040810161317a8285612d09565b60405181810167ffffffffffffffff811182821017156132df57600080fd5b604052919050565b600067ffffffffffffffff8211156132fe57600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b919050565b6000611f168261333e565b151590565b90565b6000611f1682613320565b6001600160a01b031690565b6000611f1682613333565b82818337506000910152565b60005b8381101561337c578181015183820152602001613364565b838111156104d45750506000910152565b601f01601f191690565b6133a081613320565b81146108c957600080fd5b6133a08161332b565b6133a081613330565b6133a08161333356fea365627a7a72315820ce0b52e9b5c82f957a5966bc89c1e5ca746205ba9274035482b2834a0682c1bb6c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "773:13659:25:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;773:13659:25;;;;;;;", - "deployedSourceMap": "773:13659:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:690:16;;;;;;;;;;;;;;;;:::i;:::-;;4686:167;;;;;;;;;;;;;;;;:::i;:::-;;1620:2685:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1620:2685:25;;;;;;;;;;;;;;;;:::i;:::-;;2581:157:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2581:157:16;;;;;;;;;;;;;;;;:::i;:::-;;7718:2211:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7718:2211:25;;;;;;;;;;;;;;;;:::i;:::-;;2252:323:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2252:323:16;;;;;;;;;;;;;;;;:::i;:::-;;3710:227;;;;;;;;;;;;;;;;:::i;:::-;;2744:99;;;:::i;:::-;;3284:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3284:159:16;;;;;;;;;;;;;;;;:::i;:::-;;4283:397;;;;;;;;;;;;;;;;:::i;:::-;;6836:200;;;;;;;;;;;;;;;;:::i;:::-;;3449:255;;;;;;;;;;;;;;;;:::i;:::-;;6206:282;;;;;;;;;;;;;;;;:::i;:::-;;4859:198;;;;;;;;;;;;;;;;:::i;:::-;;6494:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6494:150:16;;;;;;;;;;;;;;;;:::i;:::-;;3943:334;;;;;;;;;;;;;;;;:::i;:::-;;4311:2218:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4311:2218:25;;;;;;;;;;;;;;;;:::i;:::-;;5960:240:16;;;;;;;;;;;;;;;;:::i;:::-;;12741:1689:25;;;;;;;;;;;;;;;;:::i;:::-;;1466:429:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1466:429:16;;;;;;;;;;;;;;;;:::i;:::-;;9994:2741:25;;;;;;;;;;;;;;;;:::i;:::-;;1901:345:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1901:345:16;;;;;;;;;;;;;;;;:::i;:::-;;6650:180;;;;;;;;;;;;;;;;:::i;:::-;;2849:429;;;;;;;;;;;;;;;;:::i;:::-;;5264:690;5407:15;5433:6;5425:25;;;5459:4;5425:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5425:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5425:40:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5425:40:16;;;;;;;;;5407:58;;498:42;5639:23;;:6;:23;;;5635:110;;5678:56;5692:10;5712:4;5719:6;5727;5678:13;:56::i;:::-;5635:110;5754:22;5761:6;5769;5754;:22::i;:::-;5824:13;5848:6;5840:25;;;5874:4;5840:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5840:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5840:40:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5840:40:16;;;;;;;;;5824:56;;5891;5901:6;5909:10;5921:25;5925:8;5935:10;5921:3;:25::i;:::-;5891:9;:56::i;:::-;5264:690;;;;:::o;4686:167::-;4810:1;4778:6;4770:22;;;4793:12;4770:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4770:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4770:36:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4770:36:16;;;;;;;;;:41;4762:84;;;;;;;;;;;;;;;;;;;;;;4686:167;;:::o;1620:2685:25:-;1777:39;;:::i;:::-;1830:5;;1819:42;;;;;;;;;1777:84;;1872:31;1922:10;:33;;;1872:84;;1967:24;1994:10;:27;;;1967:54;;2031:24;2058:10;:27;;;2031:54;;2096:15;2114:43;2144:12;2114:25;2130:8;2114:11;:15;;:25;;;;:::i;:::-;:29;;:43;;;;:::i;:::-;2096:61;;2671:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2671:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2671:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2671:31:25;;;;;;;;;2651:51;;:16;:51;;;2647:673;;;2718:42;2730:16;2748:11;2718;:42::i;:::-;2647:673;;;2843:26;2880:16;2872:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2872:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2872:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2872:38:25;;;;;;;;;2843:67;;2925:29;2957:90;2986:18;3022:11;2957;:90::i;:::-;2925:122;;3122:18;3115:51;;;3167:16;3185:24;3115:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3115:95:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3115:95:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3115:95:25;;;;;;;;;;3254:55;3266:16;3284:24;3254:11;:55::i;:::-;2647:673;;;3484:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3484:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3484:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3484:31:25;;;;;;;;;3464:51;;:16;:51;;;3460:839;;;3531:36;3538:16;3556:10;3531:6;:36::i;:::-;3460:839;;;3639:26;3676:16;3668:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3668:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3668:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3668:38:25;;;;;;;;;3639:67;;3834:29;3866:98;3904:18;3940:10;3866:20;:98::i;:::-;3834:130;;4011:50;4018:16;4036:24;4011:6;:50::i;:::-;4219:69;4231:18;4251:24;4277:10;4219:11;:69::i;:::-;;3460:839;;;1620:2685;;;;;;;;;;:::o;2581:157:16:-;2677:21;2690:7;2677:12;:21::i;:::-;2708:23;2723:7;2708:14;:23::i;:::-;2581:157;:::o;7718:2211:25:-;8332:31;8382:22;8332:73;;8534:18;8587:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8587:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8587:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8587:31:25;;;;;;;;;8567:51;;:16;:51;;;8563:355;;;8650:23;8634:39;;8563:355;;;8776:131;8822:16;8814:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8814:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8814:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8814:38:25;;;;;;;;;8870:23;8776:20;:131::i;:::-;8760:147;;8563:355;9067:53;9164:27;9153:39;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9153:39:25;;;9206:30;;9123:123;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9123:123:25;;;9067:179;;9257:24;9357:15;:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9357:55:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9357:55:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9357:55:25;;;;;;;;;9310:131;;;:133;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9310:133:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9310:133:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9310:133:25;;;;;;;;;9257:196;;9509:56;9527:15;9552:11;9509:17;:56::i;:::-;9623:11;:21;;;9658:15;9687;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9687:32:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9687:32:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9687:32:25;;;;;;;;;9733:13;9760:40;9623:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9623:187:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9623:187:25;;;;9866:56;9884:15;9909:11;9866:17;:56::i;:::-;7718:2211;;;;;;;;;;;:::o;2252:323:16:-;2362:6;2371:1;2362:10;;2357:212;2378:7;:14;2374:1;:18;2357:212;;;498:42;2462:27;;:7;2470:1;2462:10;;;;;;;;;;;;;;:27;;;2458:101;;2509:35;2523:7;2531:1;2523:10;;;;;;;;;;;;;;2540:2;2509:13;:35::i;:::-;2458:101;2394:3;;;;;;;2357:212;;;;2252:323;:::o;3710:227::-;3849:11;:9;:11::i;:::-;3902:28;3909:6;3917:12;3902:6;:28::i;:::-;3710:227;;:::o;2744:99::-;498:42;2790:27;;;2824:9;2790:46;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2790:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2790:46:16;;;;;2744:99::o;3284:159::-;3400:1;3368:6;3360:22;;;3383:12;3360:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3360:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3360:36:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3360:36:16;;;;;;;;;:41;3352:84;;;;;;;;;;;;;;;;;;;;;;3284:159;;:::o;4283:397::-;498:42;4387:23;;:6;:23;;;4383:291;;;4434:6;4426:33;;;4466:6;4474:9;4426:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4426:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4426:58:16;;;;;4383:291;;;4515:29;4529:6;4537;4515:13;:29::i;:::-;4622:1;4574:6;4566:33;;;4600:9;4611:6;4566:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4566:52:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4566:52:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4566:52:16;;;;;;;;;:57;4558:105;;;;;;;;;;;;;;;;;;;;;;4383:291;4283:397;;;:::o;6836:200::-;6950:32;6967:6;6975;6950:16;:32::i;:::-;6992:37;7002:6;7010:10;7022:6;6992:9;:37::i;:::-;6836:200;;:::o;3449:255::-;3619:34;3626:12;3640;3619:6;:34::i;:::-;3663;3670:12;3684;3663:6;:34::i;:::-;3449:255;;;;:::o;6206:282::-;498:42;6322:23;;:6;:23;;;6318:110;;6361:56;6375:10;6395:4;6402:6;6410;6361:13;:56::i;:::-;6318:110;6437:44;6455:9;6466:6;6474;6437:17;:44::i;:::-;6206:282;;;:::o;4859:198::-;5003:1;4961:6;4953:32;;;4986:12;4953:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4953:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4953:46:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4953:46:16;;;;;;;;;:51;4945:105;;;;;;;;;;;;;;;;;;;;;;4859:198;;:::o;6494:150::-;6568:22;6575:6;6583;6568;:22::i;:::-;6600:37;6610:6;6618:10;6630:6;6600:9;:37::i;:::-;6494:150;;:::o;3943:334::-;498:42;4022:23;;:6;:23;;;4018:253;;;4069:6;4061:27;;;4095:6;4061:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4061:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4061:43:16;;;;;4018:253;;;4135:29;4149:6;4157;4135:13;:29::i;:::-;4225:1;4194:6;4186:27;;;4214:6;4186:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4186:35:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4186:35:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4186:35:16;;;;;;;;;:40;4178:82;;;;;;;;;;;;;;;;;;;;;;4018:253;3943:334;;:::o;4311:2218:25:-;4474:39;;:::i;:::-;4527:5;;4516:42;;;;;;;;;4474:84;;4569:31;4619:10;:33;;;4569:84;;4664:24;4691:10;:27;;;4664:54;;4728:24;4755:10;:27;;;4728:54;;5211:16;5230:43;5260:12;5230:25;5246:8;5230:11;:15;;:25;;;;:::i;:::-;:29;;:43;;;;:::i;:::-;5211:62;;5308:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5308:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5308:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5308:31:25;;;;;;;;;5288:51;;:16;:51;;;5284:538;;;5355:37;5362:16;5380:11;5355:6;:37::i;:::-;5284:538;;;5507:26;5544:16;5536:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5536:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5536:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5536:38:25;;;;;;;;;5507:67;;5588:29;5620:90;5649:18;5685:11;5620;:90::i;:::-;5588:122;;5761:50;5768:16;5786:24;5761:6;:50::i;:::-;5284:538;;;5914:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5914:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5914:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5914:31:25;;;;;;;;;5894:51;;:16;:51;;;5890:633;;;5961:47;5978:16;5996:11;5961:16;:47::i;:::-;5890:633;;;6120:26;6157:16;6149:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6149:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6149:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6149:38:25;;;;;;;;;6120:67;;6201:29;6233:53;6254:18;6274:11;6233:20;:53::i;:::-;6201:85;;6329:60;6346:16;6364:24;6329:16;:60::i;:::-;6442:70;6454:18;6474:24;6500:11;6442;:70::i;:::-;;5890:633;;;4311:2218;;;;;;;;;;:::o;5960:240:16:-;498:42;6051:23;;:6;:23;;;6047:110;;6090:56;6104:10;6124:4;6131:6;6139;6090:13;:56::i;:::-;6047:110;6166:27;6178:6;6186;6166:11;:27::i;:::-;5960:240;;:::o;12741:1689:25:-;13312:16;13292:36;;:16;:36;;;;13284:78;;;;;;;;;;;;;;;;;;;;;;13373:17;13400:31;13450:22;13400:73;;13514:60;13531:16;13549:24;13514:16;:60::i;:::-;13609:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13609:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13609:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13609:31:25;;;;;;;;;13589:51;;:16;:51;;;13585:759;;;13699:123;13736:16;13728:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13728:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13728:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13728:38:25;;;;;;;;;13784:24;13699:11;:123::i;:::-;13684:138;;13585:759;;;13863:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13863:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13863:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13863:31:25;;;;;;;;;13843:51;;:16;:51;;;13839:505;;;13953:123;13990:16;13982:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13982:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13982:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13982:38:25;;;;;;;;;14038:24;13953:11;:123::i;:::-;13938:138;;13839:505;;;14152:181;14191:16;14183:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14183:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14183:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14183:38:25;;;;;;;;;14247:16;14239:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14239:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14239:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14239:38:25;;;;;;;;;14295:24;14152:13;:181::i;:::-;14137:196;;13839:505;13585:759;14385:38;14392:16;14410:12;14385:6;:38::i;:::-;12741:1689;;;;;;:::o;1466:429:16:-;1670:20;417:42;1693:53;;;1747:7;1693:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1693:62:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:62:16;;;;;;39:16:-1;36:1;17:17;2:54;1693:62:16;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1693:62:16;;;;;;;;;1670:85;;1771:6;1780:1;1771:10;;1766:123;1787:6;:13;1783:1;:17;1766:123;;;1842:1;1829:6;1836:1;1829:9;;;;;;;;;;;;;;:14;1821:57;;;;;;;;;;;;;;;;;;;;;;1802:3;;;;;;;1766:123;;;;1466:429;;:::o;9994:2741:25:-;10533:16;10513:36;;:16;:36;;;;10505:72;;;;;;;;;;;;;;;;;;;;;;10588:31;10638:22;10588:73;;10672:17;10699:26;10735;10796:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10796:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10796:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10796:31:25;;;;;;;;;10776:51;;:16;:51;;;10772:1860;;;10900:16;10892:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10892:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10892:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10892:38:25;;;;;;;;;10871:59;;11010:70;11031:18;11051:28;11010:20;:70::i;:::-;10995:85;;11139:38;11146:16;11164:12;11139:6;:38::i;:::-;11229:75;11241:18;11261:12;11275:28;11229:11;:75::i;:::-;;10772:1860;;;11345:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11345:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11345:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11345:31:25;;;;;;;;;11325:51;;:16;:51;;;11321:1311;;;11449:16;11441:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11441:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11441:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11441:38:25;;;;;;;;;11420:59;;11559:70;11580:18;11600:28;11559:20;:70::i;:::-;11544:85;;11686:38;11693:16;11711:12;11686:6;:38::i;:::-;11776:75;11788:18;11808:12;11822:28;11776:11;:75::i;:::-;;11321:1311;;;11941:16;11933:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11933:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11933:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11933:38:25;;;;;;;;;11912:59;;12014:16;12006:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12006:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12006:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12006:38:25;;;;;;;;;11985:59;;12103:14;12120:70;12141:18;12161:28;12120:20;:70::i;:::-;12103:87;;12266:51;12287:18;12307:9;12266:20;:51::i;:::-;12251:66;;12376:38;12383:16;12401:12;12376:6;:38::i;:::-;12479:56;12491:18;12511:12;12525:9;12479:11;:56::i;:::-;;12549:72;12561:18;12581:9;12592:28;12549:11;:72::i;:::-;;11321:1311;;10772:1860;12669:59;12681:16;12699:28;12669:11;:59::i;:::-;9994:2741;;;;;;;;:::o;1901:345:16:-;2051:18;2080:6;2072:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2072:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2072:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2072:28:16;;;;;;;;;2051:49;;2177:4;2131:50;;2138:10;2131:26;;;2158:6;2166;2131:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:42:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:42:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2131:42:16;;;;;;;;;:50;;;2110:129;;;;;;;;;;;;;;;;;;;;;;1901:345;;;:::o;6650:180::-;6754:22;6761:6;6769;6754;:22::i;:::-;6786:37;6796:6;6804:10;6816:6;6786:9;:37::i;:::-;6650:180;;:::o;2849:429::-;498:42;2923:23;;:6;:23;;;2919:353;;;498:42;2962:27;;;2996:6;2962:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2962:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2962:43:16;;;;;2919:353;;;3099:29;3113:6;3121;3099:13;:29::i;:::-;3198:1;3174:6;3166:20;;;3187:6;3166:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3166:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3166:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3166:28:16;;;;;;;;;:33;3143:118;;;;;;;;;;;;;;;;;;;;;;2919:353;2849:429;;:::o;722:345::-;866:18;895:6;887:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;887:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;887:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;887:28:16;;;;;;;;;866:49;;953:10;946:31;;;978:6;986:9;997:6;946:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;946:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;946:58:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;946:58:16;;;;;;;;;925:135;;;;;;;;;;;;;;;;;;;;;;722:345;;;;;:::o;547:169::-;605:7;637:1;632;:6;;624:39;;;;;;;;;;;;;;;;;;;;;;673:9;689:1;685;:5;673:17;;708:1;701:8;;;547:169;;;;:::o;1073:387::-;498:42;1193:23;;:6;:23;;;1189:265;;;1232:9;:14;;1253:6;1232:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1232:32:16;;1189:265;;;1335:6;1327:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1327:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1327:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1327:28:16;;;;;;;;;1320:45;;;1366:9;1377:6;1320:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1320:64:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1320:64:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1320:64:16;;;;;;;;;1295:148;;;;;;;;;;;;;;;;;;;;;;1189:265;1073:387;;;:::o;834:176:32:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;514:160:24:-;599:4;622:45;634:12;648:9;664:1;622:11;:45::i;:::-;615:52;;514:160;;;;:::o;2311:208::-;2402:4;2442:33;2462:12;2442:19;:33::i;:::-;2425:76;;;2502:9;2425:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2425:87:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2425:87:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2425:87:24;;;;;;;;;2418:94;;2311:208;;;;:::o;1117:355::-;1215:4;1231:16;1250:33;1270:12;1250:19;:33::i;:::-;1231:52;;1301:12;1294:28;;;1323:8;1333:11;1294:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1294:51:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1294:51:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1294:51:24;;;;;;;;;;1380:8;1363:59;;;1423:11;1436:12;1461:2;1455:3;:8;1363:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1363:102:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1363:102:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1363:102:24;;;;;;;;;1356:109;;;1117:355;;;;;:::o;2525:212::-;2618:4;2658:33;2678:12;2658:19;:33::i;:::-;2641:76;;;2718:11;2641:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2641:89:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2641:89:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2641:89:24;;;;;;;;;2634:96;;2525:212;;;;:::o;1022:293:25:-;1111:9;1140:12;1131:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1131:34:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1131:34:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1131:34:25;;;;;;;;;1111:55;;1185:1;1177:17;;;1232:3;1216:21;;1208:30;;;1260:1;1252:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1252:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1252:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1252:16:25;;;;;;;;;1290:1;1282:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1282:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1282:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1282:16:25;;;;;;;;;1177:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1177:131:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1177:131:25;;;;1022:293;;;:::o;1321:::-;1410:9;1439:12;1430:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1430:34:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1430:34:25;;;;;;;;;1410:55;;1484:1;1476:17;;;1531:3;1515:21;;1507:30;;;1559:1;1551:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1551:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1551:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1551:16:25;;;;;;;;;1589:1;1581:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1581:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1581:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1581:16:25;;;;;;;;;1476:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1476:131:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1476:131:25;;;;1321:293;;;:::o;1274:134:32:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;955:156:24:-;1034:4;1057:47;1069:12;1083:11;1101:1;1057:11;:47::i;:::-;1050:54;;955:156;;;;:::o;1717:160::-;1802:4;1825:45;1839:4;1845:2;1849:11;1867:1;1825:13;:45::i;:::-;1818:52;;1717:160;;;;;:::o;680:269::-;786:4;826:33;846:12;826:19;:33::i;:::-;809:84;;;900:9;911:14;938:2;932:3;:8;809:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;809:133:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;809:133:24;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;809:133:24;;;;;;;;;802:140;;680:269;;;;;:::o;337:171::-;411:7;288:42;437:50;;;488:12;437:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;437:64:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;437:64:24;;;;;;;;;430:71;;337:171;;;:::o;1732:187:32:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;1478:233:24:-;1583:4;1599:14;1616:32;1628:4;1634:13;1616:11;:32::i;:::-;1599:49;;1665:39;1677:2;1681:9;1692:11;1665;:39::i;:::-;1658:46;;;1478:233;;;;;;:::o;773:13659:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:146;;371:6;358:20;349:29;;383:41;418:5;383:41;;;343:86;;;;;454:707;;571:3;564:4;556:6;552:17;548:27;538:2;;589:1;586;579:12;538:2;626:6;613:20;648:80;663:64;720:6;663:64;;;648:80;;;639:89;;745:5;770:6;763:5;756:21;800:4;792:6;788:17;778:27;;822:4;817:3;813:14;806:21;;875:6;922:3;914:4;906:6;902:17;897:3;893:27;890:36;887:2;;;939:1;936;929:12;887:2;964:1;949:206;974:6;971:1;968:13;949:206;;;1032:3;1054:37;1087:3;1075:10;1054:37;;;1049:3;1042:50;1115:4;1110:3;1106:14;1099:21;;1143:4;1138:3;1134:14;1127:21;;1006:149;996:1;993;989:9;984:14;;949:206;;;953:14;531:630;;;;;;;;1187:722;;1315:3;1308:4;1300:6;1296:17;1292:27;1282:2;;1333:1;1330;1323:12;1282:2;1363:6;1357:13;1385:80;1400:64;1457:6;1400:64;;;1385:80;;;1376:89;;1482:5;1507:6;1500:5;1493:21;1537:4;1529:6;1525:17;1515:27;;1559:4;1554:3;1550:14;1543:21;;1612:6;1659:3;1651:4;1643:6;1639:17;1634:3;1630:27;1627:36;1624:2;;;1676:1;1673;1666:12;1624:2;1701:1;1686:217;1711:6;1708:1;1705:13;1686:217;;;1769:3;1791:48;1835:3;1823:10;1791:48;;;1786:3;1779:61;1863:4;1858:3;1854:14;1847:21;;1891:4;1886:3;1882:14;1875:21;;1743:160;1733:1;1730;1726:9;1721:14;;1686:217;;;1690:14;1275:634;;;;;;;;1917:128;;1998:6;1992:13;1983:22;;2010:30;2034:5;2010:30;;;1977:68;;;;;2052:134;;2136:6;2130:13;2121:22;;2148:33;2175:5;2148:33;;;2115:71;;;;;2207:336;;;2321:3;2314:4;2306:6;2302:17;2298:27;2288:2;;2339:1;2336;2329:12;2288:2;2372:6;2359:20;2349:30;;2399:18;2391:6;2388:30;2385:2;;;2431:1;2428;2421:12;2385:2;2465:4;2457:6;2453:17;2441:29;;2516:3;2508:4;2500:6;2496:17;2486:8;2482:32;2479:41;2476:2;;;2533:1;2530;2523:12;2476:2;2281:262;;;;;;2551:174;;2655:6;2649:13;2640:22;;2667:53;2714:5;2667:53;;;2634:91;;;;;2788:663;;2912:4;2900:9;2895:3;2891:19;2887:30;2884:2;;;2930:1;2927;2920:12;2884:2;2948:20;2963:4;2948:20;;;2939:29;;3036:1;3068:49;3113:3;3104:6;3093:9;3089:22;3068:49;;;3061:4;3054:5;3050:16;3043:75;2978:151;3191:2;3224:49;3269:3;3260:6;3249:9;3245:22;3224:49;;;3217:4;3210:5;3206:16;3199:75;3139:146;3347:2;3380:49;3425:3;3416:6;3405:9;3401:22;3380:49;;;3373:4;3366:5;3362:16;3355:75;3295:146;2878:573;;;;;3458:130;;3538:6;3525:20;3516:29;;3550:33;3577:5;3550:33;;;3510:78;;;;;3595:134;;3679:6;3673:13;3664:22;;3691:33;3718:5;3691:33;;;3658:71;;;;;3736:263;;3851:2;3839:9;3830:7;3826:23;3822:32;3819:2;;;3867:1;3864;3857:12;3819:2;3902:1;3919:64;3975:7;3966:6;3955:9;3951:22;3919:64;;;3909:74;;3881:108;3813:186;;;;;4006:1009;;;;;;;;4222:3;4210:9;4201:7;4197:23;4193:33;4190:2;;;4239:1;4236;4229:12;4190:2;4274:1;4291:53;4336:7;4327:6;4316:9;4312:22;4291:53;;;4281:63;;4253:97;4381:2;4399:61;4452:7;4443:6;4432:9;4428:22;4399:61;;;4389:71;;4360:106;4497:2;4515:53;4560:7;4551:6;4540:9;4536:22;4515:53;;;4505:63;;4476:98;4605:2;4623:53;4668:7;4659:6;4648:9;4644:22;4623:53;;;4613:63;;4584:98;4713:3;4732:53;4777:7;4768:6;4757:9;4753:22;4732:53;;;4722:63;;4692:99;4850:3;4839:9;4835:19;4822:33;4875:18;4867:6;4864:30;4861:2;;;4907:1;4904;4897:12;4861:2;4935:64;4991:7;4982:6;4971:9;4967:22;4935:64;;;4925:74;;;;4801:204;4184:831;;;;;;;;;;;5022:491;;;;5160:2;5148:9;5139:7;5135:23;5131:32;5128:2;;;5176:1;5173;5166:12;5128:2;5211:1;5228:53;5273:7;5264:6;5253:9;5249:22;5228:53;;;5218:63;;5190:97;5318:2;5336:53;5381:7;5372:6;5361:9;5357:22;5336:53;;;5326:63;;5297:98;5426:2;5444:53;5489:7;5480:6;5469:9;5465:22;5444:53;;;5434:63;;5405:98;5122:391;;;;;;5520:617;;;;;5675:3;5663:9;5654:7;5650:23;5646:33;5643:2;;;5692:1;5689;5682:12;5643:2;5727:1;5744:53;5789:7;5780:6;5769:9;5765:22;5744:53;;;5734:63;;5706:97;5834:2;5852:53;5897:7;5888:6;5877:9;5873:22;5852:53;;;5842:63;;5813:98;5942:2;5960:53;6005:7;5996:6;5985:9;5981:22;5960:53;;;5950:63;;5921:98;6050:2;6068:53;6113:7;6104:6;6093:9;6089:22;6068:53;;;6058:63;;6029:98;5637:500;;;;;;;;6144:366;;;6265:2;6253:9;6244:7;6240:23;6236:32;6233:2;;;6281:1;6278;6271:12;6233:2;6316:1;6333:53;6378:7;6369:6;6358:9;6354:22;6333:53;;;6323:63;;6295:97;6423:2;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;;;6431:63;;6402:98;6227:283;;;;;;6517:617;;;;;6672:3;6660:9;6651:7;6647:23;6643:33;6640:2;;;6689:1;6686;6679:12;6640:2;6724:1;6741:53;6786:7;6777:6;6766:9;6762:22;6741:53;;;6731:63;;6703:97;6831:2;6849:53;6894:7;6885:6;6874:9;6870:22;6849:53;;;6839:63;;6810:98;6939:2;6957:53;7002:7;6993:6;6982:9;6978:22;6957:53;;;6947:63;;6918:98;7047:2;7065:53;7110:7;7101:6;7090:9;7086:22;7065:53;;;7055:63;;7026:98;6634:500;;;;;;;;7141:377;;7270:2;7258:9;7249:7;7245:23;7241:32;7238:2;;;7286:1;7283;7276:12;7238:2;7349:1;7338:9;7334:17;7321:31;7372:18;7364:6;7361:30;7358:2;;;7404:1;7401;7394:12;7358:2;7424:78;7494:7;7485:6;7474:9;7470:22;7424:78;;;7414:88;;7300:208;7232:286;;;;;7525:392;;7665:2;7653:9;7644:7;7640:23;7636:32;7633:2;;;7681:1;7678;7671:12;7633:2;7737:1;7726:9;7722:17;7716:24;7760:18;7752:6;7749:30;7746:2;;;7792:1;7789;7782:12;7746:2;7812:89;7893:7;7884:6;7873:9;7869:22;7812:89;;;7802:99;;7695:212;7627:290;;;;;7924:257;;8036:2;8024:9;8015:7;8011:23;8007:32;8004:2;;;8052:1;8049;8042:12;8004:2;8087:1;8104:61;8157:7;8148:6;8137:9;8133:22;8104:61;;;8094:71;;8066:105;7998:183;;;;;8188:263;;8303:2;8291:9;8282:7;8278:23;8274:32;8271:2;;;8319:1;8316;8309:12;8271:2;8354:1;8371:64;8427:7;8418:6;8407:9;8403:22;8371:64;;;8361:74;;8333:108;8265:186;;;;;8458:303;;8593:2;8581:9;8572:7;8568:23;8564:32;8561:2;;;8609:1;8606;8599:12;8561:2;8644:1;8661:84;8737:7;8728:6;8717:9;8713:22;8661:84;;;8651:94;;8623:128;8555:206;;;;;8768:311;;8907:2;8895:9;8886:7;8882:23;8878:32;8875:2;;;8923:1;8920;8913:12;8875:2;8958:1;8975:88;9055:7;9046:6;9035:9;9031:22;8975:88;;;8965:98;;8937:132;8869:210;;;;;9086:263;;9201:2;9189:9;9180:7;9176:23;9172:32;9169:2;;;9217:1;9214;9207:12;9169:2;9252:1;9269:64;9325:7;9316:6;9305:9;9301:22;9269:64;;;9259:74;;9231:108;9163:186;;;;;9356:741;;;;;;9530:3;9518:9;9509:7;9505:23;9501:33;9498:2;;;9547:1;9544;9537:12;9498:2;9582:1;9599:53;9644:7;9635:6;9624:9;9620:22;9599:53;;;9589:63;;9561:97;9689:2;9707:53;9752:7;9743:6;9732:9;9728:22;9707:53;;;9697:63;;9668:98;9797:2;9815:53;9860:7;9851:6;9840:9;9836:22;9815:53;;;9805:63;;9776:98;9933:2;9922:9;9918:18;9905:32;9957:18;9949:6;9946:30;9943:2;;;9989:1;9986;9979:12;9943:2;10017:64;10073:7;10064:6;10053:9;10049:22;10017:64;;;10007:74;;;;9884:203;9492:605;;;;;;;;;10105:173;;10192:46;10234:3;10226:6;10192:46;;;10267:4;10262:3;10258:14;10244:28;;10185:93;;;;;10286:142;10377:45;10416:5;10377:45;;;10372:3;10365:58;10359:69;;;10435:103;10508:24;10526:5;10508:24;;;10503:3;10496:37;10490:48;;;10545:113;10628:24;10646:5;10628:24;;;10623:3;10616:37;10610:48;;;10696:690;;10841:54;10889:5;10841:54;;;10908:86;10987:6;10982:3;10908:86;;;10901:93;;11015:56;11065:5;11015:56;;;11091:7;11119:1;11104:260;11129:6;11126:1;11123:13;11104:260;;;11196:6;11190:13;11217:63;11276:3;11261:13;11217:63;;;11210:70;;11297:60;11350:6;11297:60;;;11287:70;;11161:203;11151:1;11148;11144:9;11139:14;;11104:260;;;11108:14;11377:3;11370:10;;10820:566;;;;;;;;11394:113;11477:24;11495:5;11477:24;;;11472:3;11465:37;11459:48;;;11537:310;;11669:88;11750:6;11745:3;11669:88;;;11662:95;;11769:43;11805:6;11800:3;11793:5;11769:43;;;11834:6;11829:3;11825:16;11818:23;;11655:192;;;;;;11855:343;;11965:38;11997:5;11965:38;;;12015:70;12078:6;12073:3;12015:70;;;12008:77;;12090:52;12135:6;12130:3;12123:4;12116:5;12112:16;12090:52;;;12163:29;12185:6;12163:29;;;12158:3;12154:39;12147:46;;11945:253;;;;;;12205:356;;12333:38;12365:5;12333:38;;;12383:88;12464:6;12459:3;12383:88;;;12376:95;;12476:52;12521:6;12516:3;12509:4;12502:5;12498:16;12476:52;;;12549:6;12544:3;12540:16;12533:23;;12313:248;;;;;;12568:347;;12680:39;12713:5;12680:39;;;12731:71;12795:6;12790:3;12731:71;;;12724:78;;12807:52;12852:6;12847:3;12840:4;12833:5;12829:16;12807:52;;;12880:29;12902:6;12880:29;;;12875:3;12871:39;12864:46;;12660:255;;;;;;12923:327;;13083:67;13147:2;13142:3;13083:67;;;13076:74;;13183:29;13179:1;13174:3;13170:11;13163:50;13241:2;13236:3;13232:12;13225:19;;13069:181;;;;13259:330;;13419:67;13483:2;13478:3;13419:67;;;13412:74;;13519:32;13515:1;13510:3;13506:11;13499:53;13580:2;13575:3;13571:12;13564:19;;13405:184;;;;13598:330;;13758:67;13822:2;13817:3;13758:67;;;13751:74;;13858:32;13854:1;13849:3;13845:11;13838:53;13919:2;13914:3;13910:12;13903:19;;13744:184;;;;13937:378;;14097:67;14161:2;14156:3;14097:67;;;14090:74;;14197:34;14193:1;14188:3;14184:11;14177:55;14266:11;14261:2;14256:3;14252:12;14245:33;14306:2;14301:3;14297:12;14290:19;;14083:232;;;;14324:320;;14484:67;14548:2;14543:3;14484:67;;;14477:74;;14584:22;14580:1;14575:3;14571:11;14564:43;14635:2;14630:3;14626:12;14619:19;;14470:174;;;;14653:330;;14813:67;14877:2;14872:3;14813:67;;;14806:74;;14913:32;14909:1;14904:3;14900:11;14893:53;14974:2;14969:3;14965:12;14958:19;;14799:184;;;;14992:372;;15152:67;15216:2;15211:3;15152:67;;;15145:74;;15252:34;15248:1;15243:3;15239:11;15232:55;15321:5;15316:2;15311:3;15307:12;15300:27;15355:2;15350:3;15346:12;15339:19;;15138:226;;;;15373:330;;15533:67;15597:2;15592:3;15533:67;;;15526:74;;15633:32;15629:1;15624:3;15620:11;15613:53;15694:2;15689:3;15685:12;15678:19;;15519:184;;;;15712:329;;15872:67;15936:2;15931:3;15872:67;;;15865:74;;15972:31;15968:1;15963:3;15959:11;15952:52;16032:2;16027:3;16023:12;16016:19;;15858:183;;;;16050:325;;16210:67;16274:2;16269:3;16210:67;;;16203:74;;16310:27;16306:1;16301:3;16297:11;16290:48;16366:2;16361:3;16357:12;16350:19;;16196:179;;;;16384:296;;16561:83;16642:1;16637:3;16561:83;;;16554:90;;16672:1;16667:3;16663:11;16656:18;;16547:133;;;;16689:332;;16849:67;16913:2;16908:3;16849:67;;;16842:74;;16949:34;16945:1;16940:3;16936:11;16929:55;17012:2;17007:3;17003:12;16996:19;;16835:186;;;;17030:329;;17190:67;17254:2;17249:3;17190:67;;;17183:74;;17290:31;17286:1;17281:3;17277:11;17270:52;17350:2;17345:3;17341:12;17334:19;;17176:183;;;;17368:330;;17528:67;17592:2;17587:3;17528:67;;;17521:74;;17628:32;17624:1;17619:3;17615:11;17608:53;17689:2;17684:3;17680:12;17673:19;;17514:184;;;;17707:323;;17867:67;17931:2;17926:3;17867:67;;;17860:74;;17967:25;17963:1;17958:3;17954:11;17947:46;18021:2;18016:3;18012:12;18005:19;;17853:177;;;;18038:113;18121:24;18139:5;18121:24;;;18116:3;18109:37;18103:48;;;18158:439;;18358:93;18447:3;18438:6;18358:93;;;18351:100;;18469:103;18568:3;18559:6;18551;18469:103;;;18462:110;;18589:3;18582:10;;18339:258;;;;;;;18604:370;;18802:147;18945:3;18802:147;;;18795:154;;18966:3;18959:10;;18783:191;;;;18981:213;;19099:2;19088:9;19084:18;19076:26;;19113:71;19181:1;19170:9;19166:17;19157:6;19113:71;;;19070:124;;;;;19201:647;;19429:3;19418:9;19414:19;19406:27;;19444:79;19520:1;19509:9;19505:17;19496:6;19444:79;;;19534:72;19602:2;19591:9;19587:18;19578:6;19534:72;;;19617;19685:2;19674:9;19670:18;19661:6;19617:72;;;19737:9;19731:4;19727:20;19722:2;19711:9;19707:18;19700:48;19762:76;19833:4;19824:6;19762:76;;;19754:84;;19400:448;;;;;;;;19855:435;;20029:2;20018:9;20014:18;20006:26;;20043:71;20111:1;20100:9;20096:17;20087:6;20043:71;;;20125:72;20193:2;20182:9;20178:18;20169:6;20125:72;;;20208;20276:2;20265:9;20261:18;20252:6;20208:72;;;20000:290;;;;;;;20297:324;;20443:2;20432:9;20428:18;20420:26;;20457:71;20525:1;20514:9;20510:17;20501:6;20457:71;;;20539:72;20607:2;20596:9;20592:18;20583:6;20539:72;;;20414:207;;;;;;20628:361;;20796:2;20785:9;20781:18;20773:26;;20846:9;20840:4;20836:20;20832:1;20821:9;20817:17;20810:47;20871:108;20974:4;20965:6;20871:108;;;20863:116;;20767:222;;;;;20996:435;;21170:2;21159:9;21155:18;21147:26;;21184:71;21252:1;21241:9;21237:17;21228:6;21184:71;;;21266:72;21334:2;21323:9;21319:18;21310:6;21266:72;;;21349;21417:2;21406:9;21402:18;21393:6;21349:72;;;21141:290;;;;;;;21438:301;;21576:2;21565:9;21561:18;21553:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21651:78;21724:4;21715:6;21651:78;;;21643:86;;21547:192;;;;;21746:407;;21937:2;21926:9;21922:18;21914:26;;21987:9;21981:4;21977:20;21973:1;21962:9;21958:17;21951:47;22012:131;22138:4;22012:131;;;22004:139;;21908:245;;;;22160:407;;22351:2;22340:9;22336:18;22328:26;;22401:9;22395:4;22391:20;22387:1;22376:9;22372:17;22365:47;22426:131;22552:4;22426:131;;;22418:139;;22322:245;;;;22574:407;;22765:2;22754:9;22750:18;22742:26;;22815:9;22809:4;22805:20;22801:1;22790:9;22786:17;22779:47;22840:131;22966:4;22840:131;;;22832:139;;22736:245;;;;22988:407;;23179:2;23168:9;23164:18;23156:26;;23229:9;23223:4;23219:20;23215:1;23204:9;23200:17;23193:47;23254:131;23380:4;23254:131;;;23246:139;;23150:245;;;;23402:407;;23593:2;23582:9;23578:18;23570:26;;23643:9;23637:4;23633:20;23629:1;23618:9;23614:17;23607:47;23668:131;23794:4;23668:131;;;23660:139;;23564:245;;;;23816:407;;24007:2;23996:9;23992:18;23984:26;;24057:9;24051:4;24047:20;24043:1;24032:9;24028:17;24021:47;24082:131;24208:4;24082:131;;;24074:139;;23978:245;;;;24230:407;;24421:2;24410:9;24406:18;24398:26;;24471:9;24465:4;24461:20;24457:1;24446:9;24442:17;24435:47;24496:131;24622:4;24496:131;;;24488:139;;24392:245;;;;24644:407;;24835:2;24824:9;24820:18;24812:26;;24885:9;24879:4;24875:20;24871:1;24860:9;24856:17;24849:47;24910:131;25036:4;24910:131;;;24902:139;;24806:245;;;;25058:407;;25249:2;25238:9;25234:18;25226:26;;25299:9;25293:4;25289:20;25285:1;25274:9;25270:17;25263:47;25324:131;25450:4;25324:131;;;25316:139;;25220:245;;;;25472:407;;25663:2;25652:9;25648:18;25640:26;;25713:9;25707:4;25703:20;25699:1;25688:9;25684:17;25677:47;25738:131;25864:4;25738:131;;;25730:139;;25634:245;;;;25886:407;;26077:2;26066:9;26062:18;26054:26;;26127:9;26121:4;26117:20;26113:1;26102:9;26098:17;26091:47;26152:131;26278:4;26152:131;;;26144:139;;26048:245;;;;26300:407;;26491:2;26480:9;26476:18;26468:26;;26541:9;26535:4;26531:20;26527:1;26516:9;26512:17;26505:47;26566:131;26692:4;26566:131;;;26558:139;;26462:245;;;;26714:407;;26905:2;26894:9;26890:18;26882:26;;26955:9;26949:4;26945:20;26941:1;26930:9;26926:17;26919:47;26980:131;27106:4;26980:131;;;26972:139;;26876:245;;;;27128:407;;27319:2;27308:9;27304:18;27296:26;;27369:9;27363:4;27359:20;27355:1;27344:9;27340:17;27333:47;27394:131;27520:4;27394:131;;;27386:139;;27290:245;;;;27542:213;;27660:2;27649:9;27645:18;27637:26;;27674:71;27742:1;27731:9;27727:17;27718:6;27674:71;;;27631:124;;;;;27762:324;;27908:2;27897:9;27893:18;27885:26;;27922:71;27990:1;27979:9;27975:17;27966:6;27922:71;;;28004:72;28072:2;28061:9;28057:18;28048:6;28004:72;;;27879:207;;;;;;28093:435;;28267:2;28256:9;28252:18;28244:26;;28281:71;28349:1;28338:9;28334:17;28325:6;28281:71;;;28363:72;28431:2;28420:9;28416:18;28407:6;28363:72;;;28446;28514:2;28503:9;28499:18;28490:6;28446:72;;;28238:290;;;;;;;28535:256;;28597:2;28591:9;28581:19;;28635:4;28627:6;28623:17;28734:6;28722:10;28719:22;28698:18;28686:10;28683:34;28680:62;28677:2;;;28755:1;28752;28745:12;28677:2;28775:10;28771:2;28764:22;28575:216;;;;;28798:304;;28957:18;28949:6;28946:30;28943:2;;;28989:1;28986;28979:12;28943:2;29024:4;29016:6;29012:17;29004:25;;29087:4;29081;29077:15;29069:23;;28880:222;;;;29109:304;;29268:18;29260:6;29257:30;29254:2;;;29300:1;29297;29290:12;29254:2;29335:4;29327:6;29323:17;29315:25;;29398:4;29392;29388:15;29380:23;;29191:222;;;;29420:151;;29506:3;29498:11;;29544:4;29539:3;29535:14;29527:22;;29492:79;;;;29578:137;;29687:5;29681:12;29671:22;;29652:63;;;;29722:121;;29815:5;29809:12;29799:22;;29780:63;;;;29850:122;;29944:5;29938:12;29928:22;;29909:63;;;;29979:108;;30077:4;30072:3;30068:14;30060:22;;30054:33;;;;30095:178;;30225:6;30220:3;30213:19;30262:4;30257:3;30253:14;30238:29;;30206:67;;;;;30282:162;;30396:6;30391:3;30384:19;30433:4;30428:3;30424:14;30409:29;;30377:67;;;;;30453:144;;30588:3;30573:18;;30566:31;;;;;30606:163;;30721:6;30716:3;30709:19;30758:4;30753:3;30749:14;30734:29;;30702:67;;;;;30777:91;;30839:24;30857:5;30839:24;;;30828:35;;30822:46;;;;30875:99;;30945:24;30963:5;30945:24;;;30934:35;;30928:46;;;;30981:85;;31054:5;31047:13;31040:21;31029:32;;31023:43;;;;31073:72;;31135:5;31124:16;;31118:27;;;;31152:111;;31234:24;31252:5;31234:24;;;31223:35;;31217:46;;;;31270:121;;31343:42;31336:5;31332:54;31321:65;;31315:76;;;;31398:72;;31460:5;31449:16;;31443:27;;;;31477:129;;31564:37;31595:5;31564:37;;;31551:50;;31545:61;;;;31613:121;;31692:37;31723:5;31692:37;;;31679:50;;31673:61;;;;31741:108;;31820:24;31838:5;31820:24;;;31807:37;;31801:48;;;;31857:145;31938:6;31933:3;31928;31915:30;31994:1;31985:6;31980:3;31976:16;31969:27;31908:94;;;;32011:268;32076:1;32083:101;32097:6;32094:1;32091:13;32083:101;;;32173:1;32168:3;32164:11;32158:18;32154:1;32149:3;32145:11;32138:39;32119:2;32116:1;32112:10;32107:15;;32083:101;;;32199:6;32196:1;32193:13;32190:2;;;32264:1;32255:6;32250:3;32246:16;32239:27;32190:2;32060:219;;;;;32287:97;;32375:2;32371:7;32366:2;32359:5;32355:14;32351:28;32341:38;;32335:49;;;;32392:117;32461:24;32479:5;32461:24;;;32454:5;32451:35;32441:2;;32500:1;32497;32490:12;32441:2;32435:74;;32516:133;32593:32;32619:5;32593:32;;;32586:5;32583:43;32573:2;;32640:1;32637;32630:12;32573:2;32567:82;;32656:111;32722:21;32737:5;32722:21;;;32715:5;32712:32;32702:2;;32758:1;32755;32748:12;32702:2;32696:71;;32774:117;32843:24;32861:5;32843:24;;;32836:5;32833:35;32823:2;;32882:1;32879;32872:12;32823:2;32817:74;;32898:157;32987:44;33025:5;32987:44;;;32980:5;32977:55;32967:2;;33046:1;33043;33036:12;32967:2;32961:94;;33062:117;33131:24;33149:5;33131:24;;;33124:5;33121:35;33111:2;;33170:1;33167;33160:12;33111:2;33105:74;", + "deployedSourceMap": "773:13659:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:690:16;;;;;;;;;:::i;:::-;;4686:167;;;;;;;;;:::i;1620:2685:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1620:2685:25;;;;;;;;:::i;2581:157:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2581:157:16;;;;;;;;:::i;7718:2211:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7718:2211:25;;;;;;;;:::i;2252:323:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2252:323:16;;;;;;;;:::i;3710:227::-;;;;;;;;;:::i;2744:99::-;;;:::i;3284:159::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3284:159:16;;;;;;;;:::i;4283:397::-;;;;;;;;;:::i;6836:200::-;;;;;;;;;:::i;3449:255::-;;;;;;;;;:::i;6206:282::-;;;;;;;;;:::i;4859:198::-;;;;;;;;;:::i;6494:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6494:150:16;;;;;;;;:::i;3943:334::-;;;;;;;;;:::i;4311:2218:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4311:2218:25;;;;;;;;:::i;5960:240:16:-;;;;;;;;;:::i;12741:1689:25:-;;;;;;;;;:::i;1466:429:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1466:429:16;;;;;;;;:::i;9994:2741:25:-;;;;;;;;;:::i;1901:345:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1901:345:16;;;;;;;;:::i;6650:180::-;;;;;;;;;:::i;2849:429::-;;;;;;;;;:::i;5264:690::-;5425:40;;-1:-1:-1;;;5425:40:16;;5407:15;;-1:-1:-1;;;;;5425:25:16;;;;;:40;;5459:4;;5425:40;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5425:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5425:40:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5425:40:16;;;;;;;;;5407:58;-1:-1:-1;;;;;;5639:23:16;;498:42;5639:23;5635:110;;5678:56;5692:10;5712:4;5719:6;5727;5678:13;:56::i;:::-;5754:22;5761:6;5769;5754;:22::i;:::-;5840:40;;-1:-1:-1;;;5840:40:16;;5824:13;;-1:-1:-1;;;;;5840:25:16;;;;;:40;;5874:4;;5840:40;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5840:40:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5840:40:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5840:40:16;;;;;;;;;5824:56;;5891;5901:6;5909:10;5921:25;5925:8;5935:10;5921:3;:25::i;:::-;5891:9;:56::i;:::-;5264:690;;;;:::o;4686:167::-;4770:36;;-1:-1:-1;;;4770:36:16;;-1:-1:-1;;;;;4770:22:16;;;;;:36;;4793:12;;4770:36;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4770:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4770:36:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4770:36:16;;;;;;;;;:41;4762:84;;;;-1:-1:-1;;;4762:84:16;;;;;;;;;;;;;;;;;4686:167;;:::o;1620:2685:25:-;1777:39;;:::i;:::-;1819:42;;;;1830:5;1819:42;;;1922:33;;1994:27;;;;2058;;;;1777:84;;-1:-1:-1;1922:33:25;;1872:31;2114:43;2144:12;2114:25;:11;2130:8;2114:25;:15;:25;:::i;:::-;:29;:43;:29;:43;:::i;:::-;2096:61;;2671:15;-1:-1:-1;;;;;2671:29:25;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2671:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2671:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2671:31:25;;;;;;;;;-1:-1:-1;;;;;2651:51:25;:16;-1:-1:-1;;;;;2651:51:25;;2647:673;;;2718:42;2730:16;2748:11;2718;:42::i;:::-;2647:673;;;2843:26;2880:16;-1:-1:-1;;;;;2872:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2872:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2872:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2872:38:25;;;;;;;;;2843:67;;2925:29;2957:90;2986:18;3022:11;2957;:90::i;:::-;3115:95;;-1:-1:-1;;;3115:95:25;;2925:122;;-1:-1:-1;;;;;;3115:51:25;;;;;:95;;3167:16;;2925:122;;3115:95;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3115:95:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3115:95:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3115:95:25;;;;;;;;;;3254:55;3266:16;3284:24;3254:11;:55::i;:::-;2647:673;;;3484:15;-1:-1:-1;;;;;3484:29:25;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3484:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3484:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3484:31:25;;;;;;;;;-1:-1:-1;;;;;3464:51:25;:16;-1:-1:-1;;;;;3464:51:25;;3460:839;;;3531:36;3538:16;3556:10;3531:6;:36::i;:::-;3460:839;;;3639:26;3676:16;-1:-1:-1;;;;;3668:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3668:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3668:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3668:38:25;;;;;;;;;3639:67;;3834:29;3866:98;3904:18;3940:10;3866:20;:98::i;:::-;3834:130;;4011:50;4018:16;4036:24;4011:6;:50::i;:::-;4219:69;4231:18;4251:24;4277:10;4219:11;:69::i;:::-;;3460:839;;;1620:2685;;;;;;;;;;:::o;2581:157:16:-;2677:21;2690:7;2677:12;:21::i;:::-;2708:23;2723:7;2708:14;:23::i;:::-;2581:157;:::o;7718:2211:25:-;8332:31;8382:22;8332:73;;8534:18;8587:15;-1:-1:-1;;;;;8587:29:25;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8587:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8587:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8587:31:25;;;;;;;;;-1:-1:-1;;;;;8567:51:25;:16;-1:-1:-1;;;;;8567:51:25;;8563:355;;;-1:-1:-1;8650:23:25;8563:355;;;8776:131;8822:16;-1:-1:-1;;;;;8814:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8814:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8814:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8814:38:25;;;;;;;;;8870:23;8776:20;:131::i;:::-;8760:147;;8563:355;9067:53;9164:27;9153:39;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;9153:39:25;;;;9123:123;;9206:30;;;;49:4:-1;9123:123:25;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9123:123:25;;;9067:179;;9257:24;9357:15;-1:-1:-1;;;;;9357:53:25;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9357:55:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9357:55:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9357:55:25;;;;;;;;;-1:-1:-1;;;;;9310:131:25;;:133;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9310:133:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9310:133:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9310:133:25;;;;;;;;;9257:196;;9509:56;9527:15;9552:11;9509:17;:56::i;:::-;9623:11;-1:-1:-1;;;;;9623:21:25;;9658:15;9687;-1:-1:-1;;;;;9687:30:25;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9687:32:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9687:32:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9687:32:25;;;;;;;;;9733:13;9760:40;9623:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9623:187:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9623:187:25;;;;9866:56;9884:15;9909:11;9866:17;:56::i;:::-;7718:2211;;;;;;;;;;;:::o;2252:323:16:-;2362:6;2357:212;2378:7;:14;2374:1;:18;2357:212;;;498:42;-1:-1:-1;;;;;2462:27:16;:7;2470:1;2462:10;;;;;;;;;;;;;;-1:-1:-1;;;;;2462:27:16;;2458:101;;2509:35;2523:7;2531:1;2523:10;;;;;;;;;;;;;;-1:-1:-1;;2509:13:16;:35::i;:::-;2394:3;;2357:212;;3710:227;3849:11;:9;:11::i;:::-;3902:28;3909:6;3917:12;3902:6;:28::i;2744:99::-;498:42;-1:-1:-1;;;;;2790:27:16;;2824:9;2790:46;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2790:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2790:46:16;;;;;2744:99::o;3284:159::-;3360:36;;-1:-1:-1;;;3360:36:16;;-1:-1:-1;;;;;3360:22:16;;;;;:36;;3383:12;;3360:36;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3360:36:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3360:36:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3360:36:16;;;;;;;;;:41;3352:84;;;;-1:-1:-1;;;3352:84:16;;;;;;;;4283:397;-1:-1:-1;;;;;4387:23:16;;498:42;4387:23;4383:291;;;4426:58;;-1:-1:-1;;;4426:58:16;;-1:-1:-1;;;;;4426:33:16;;;;;4466:6;;4426:58;;4474:9;;4426:58;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4426:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4426:58:16;;;;;4383:291;;;4515:29;4529:6;4537;4515:13;:29::i;:::-;4566:52;;-1:-1:-1;;;4566:52:16;;-1:-1:-1;;;;;4566:33:16;;;;;:52;;4600:9;;4611:6;;4566:52;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4566:52:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4566:52:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4566:52:16;;;;;;;;;:57;4558:105;;;;-1:-1:-1;;;4558:105:16;;;;;;;;;4283:397;;;:::o;6836:200::-;6950:32;6967:6;6975;6950:16;:32::i;:::-;6992:37;7002:6;7010:10;7022:6;6992:9;:37::i;3449:255::-;3619:34;3626:12;3640;3619:6;:34::i;:::-;3663;3670:12;3684;3663:6;:34::i;6206:282::-;-1:-1:-1;;;;;6322:23:16;;498:42;6322:23;6318:110;;6361:56;6375:10;6395:4;6402:6;6410;6361:13;:56::i;:::-;6437:44;6455:9;6466:6;6474;6437:17;:44::i;4859:198::-;4953:46;;-1:-1:-1;;;4953:46:16;;-1:-1:-1;;;;;4953:32:16;;;;;:46;;4986:12;;4953:46;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4953:46:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4953:46:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4953:46:16;;;;;;;;;:51;4945:105;;;;-1:-1:-1;;;4945:105:16;;;;;;;;6494:150;6568:22;6575:6;6583;6568;:22::i;3943:334::-;-1:-1:-1;;;;;4022:23:16;;498:42;4022:23;4018:253;;;4069:6;-1:-1:-1;;;;;4061:27:16;;4095:6;4061:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4061:43:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4061:43:16;;;;;4018:253;;;4135:29;4149:6;4157;4135:13;:29::i;:::-;4186:35;;-1:-1:-1;;;4186:35:16;;-1:-1:-1;;;;;4186:27:16;;;;;:35;;4214:6;;4186:35;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4186:35:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4186:35:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4186:35:16;;;;;;;;;:40;4178:82;;;;-1:-1:-1;;;4178:82:16;;;;;;;;4311:2218:25;4474:39;;:::i;:::-;4516:42;;;;4527:5;4516:42;;;4619:33;;4691:27;;;;4755;;;;4474:84;;-1:-1:-1;4619:33:25;;4569:31;5230:43;5260:12;5230:25;:11;5246:8;5230:25;:15;:25;:::i;:::-;:29;:43;:29;:43;:::i;:::-;5211:62;;5308:15;-1:-1:-1;;;;;5308:29:25;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5308:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5308:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5308:31:25;;;;;;;;;-1:-1:-1;;;;;5288:51:25;:16;-1:-1:-1;;;;;5288:51:25;;5284:538;;;5355:37;5362:16;5380:11;5355:6;:37::i;:::-;5284:538;;;5507:26;5544:16;-1:-1:-1;;;;;5536:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5536:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5536:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5536:38:25;;;;;;;;;5507:67;;5588:29;5620:90;5649:18;5685:11;5620;:90::i;:::-;5588:122;;5761:50;5768:16;5786:24;5761:6;:50::i;:::-;5284:538;;;5914:15;-1:-1:-1;;;;;5914:29:25;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5914:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5914:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5914:31:25;;;;;;;;;-1:-1:-1;;;;;5894:51:25;:16;-1:-1:-1;;;;;5894:51:25;;5890:633;;;5961:47;5978:16;5996:11;5961:16;:47::i;5890:633::-;6120:26;6157:16;-1:-1:-1;;;;;6149:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6149:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6149:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6149:38:25;;;;;;;;;6120:67;;6201:29;6233:53;6254:18;6274:11;6233:20;:53::i;:::-;6201:85;;6329:60;6346:16;6364:24;6329:16;:60::i;:::-;6442:70;6454:18;6474:24;6500:11;6442;:70::i;5960:240:16:-;-1:-1:-1;;;;;6051:23:16;;498:42;6051:23;6047:110;;6090:56;6104:10;6124:4;6131:6;6139;6090:13;:56::i;:::-;6166:27;6178:6;6186;6166:11;:27::i;12741:1689:25:-;13312:16;-1:-1:-1;;;;;13292:36:25;:16;-1:-1:-1;;;;;13292:36:25;;;13284:78;;;;-1:-1:-1;;;13284:78:25;;;;;;;;;13373:17;13450:22;13514:60;13531:16;13549:24;13514:16;:60::i;:::-;13609:15;-1:-1:-1;;;;;13609:29:25;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13609:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13609:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13609:31:25;;;;;;;;;-1:-1:-1;;;;;13589:51:25;:16;-1:-1:-1;;;;;13589:51:25;;13585:759;;;13699:123;13736:16;-1:-1:-1;;;;;13728:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13728:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13728:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13728:38:25;;;;;;;;;13784:24;13699:11;:123::i;:::-;13684:138;;13585:759;;;13863:15;-1:-1:-1;;;;;13863:29:25;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13863:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13863:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13863:31:25;;;;;;;;;-1:-1:-1;;;;;13843:51:25;:16;-1:-1:-1;;;;;13843:51:25;;13839:505;;;13953:123;13990:16;-1:-1:-1;;;;;13982:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13982:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13982:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13982:38:25;;;;;;;;;14038:24;13953:11;:123::i;13839:505::-;14152:181;14191:16;-1:-1:-1;;;;;14183:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14183:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14183:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14183:38:25;;;;;;;;;14247:16;-1:-1:-1;;;;;14239:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14239:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14239:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14239:38:25;;;;;;;;;14295:24;14152:13;:181::i;:::-;14137:196;;13839:505;14385:38;14392:16;14410:12;14385:6;:38::i;:::-;12741:1689;;;;;;:::o;1466:429:16:-;1693:62;;-1:-1:-1;;;1693:62:16;;1670:20;;417:42;;1693:53;;:62;;1747:7;;1693:62;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1693:62:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:62:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1693:62:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;1693:62:16;;;;;;;;;1670:85;-1:-1:-1;1771:6:16;1766:123;1787:6;:13;1783:1;:17;1766:123;;;1829:6;1836:1;1829:9;;;;;;;;;;;;;;1842:1;1829:14;1821:57;;;;-1:-1:-1;;;1821:57:16;;;;;;;;;1802:3;;1766:123;;9994:2741:25;10533:16;-1:-1:-1;;;;;10513:36:25;:16;-1:-1:-1;;;;;10513:36:25;;;10505:72;;;;-1:-1:-1;;;10505:72:25;;;;;;;;;10588:31;10638:22;10588:73;;10672:17;10699:26;10735;10796:15;-1:-1:-1;;;;;10796:29:25;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10796:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10796:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10796:31:25;;;;;;;;;-1:-1:-1;;;;;10776:51:25;:16;-1:-1:-1;;;;;10776:51:25;;10772:1860;;;10900:16;-1:-1:-1;;;;;10892:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10892:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10892:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10892:38:25;;;;;;;;;10871:59;;11010:70;11031:18;11051:28;11010:20;:70::i;:::-;10995:85;;11139:38;11146:16;11164:12;11139:6;:38::i;:::-;11229:75;11241:18;11261:12;11275:28;11229:11;:75::i;:::-;;10772:1860;;;11345:15;-1:-1:-1;;;;;11345:29:25;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11345:31:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11345:31:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11345:31:25;;;;;;;;;-1:-1:-1;;;;;11325:51:25;:16;-1:-1:-1;;;;;11325:51:25;;11321:1311;;;11449:16;-1:-1:-1;;;;;11441:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11441:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11441:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11441:38:25;;;;;;;;;11420:59;;11559:70;11580:18;11600:28;11559:20;:70::i;:::-;11544:85;;11686:38;11693:16;11711:12;11686:6;:38::i;:::-;11776:75;11788:18;11808:12;11822:28;11776:11;:75::i;11321:1311::-;11941:16;-1:-1:-1;;;;;11933:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11933:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11933:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11933:38:25;;;;;;;;;11912:59;;12014:16;-1:-1:-1;;;;;12006:36:25;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12006:38:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12006:38:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12006:38:25;;;;;;;;;11985:59;;12103:14;12120:70;12141:18;12161:28;12120:20;:70::i;:::-;12103:87;;12266:51;12287:18;12307:9;12266:20;:51::i;:::-;12251:66;;12376:38;12383:16;12401:12;12376:6;:38::i;:::-;12479:56;12491:18;12511:12;12525:9;12479:11;:56::i;:::-;;12549:72;12561:18;12581:9;12592:28;12549:11;:72::i;:::-;;11321:1311;;12669:59;12681:16;12699:28;12669:11;:59::i;:::-;9994:2741;;;;;;;;:::o;1901:345:16:-;2051:18;2080:6;-1:-1:-1;;;;;2072:26:16;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2072:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2072:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2072:28:16;;;;;;;;;2131:42;;-1:-1:-1;;;2131:42:16;;2051:49;;-1:-1:-1;;;;;;2131:26:16;;;;;:42;;2158:6;;2166;;2131:42;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:42:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:42:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2131:42:16;;;;;;;;;:50;;2177:4;2131:50;2110:129;;;;-1:-1:-1;;;2110:129:16;;;;;;;;6650:180;6754:22;6761:6;6769;6754;:22::i;2849:429::-;-1:-1:-1;;;;;2923:23:16;;498:42;2923:23;2919:353;;;498:42;-1:-1:-1;;;;;2962:27:16;;2996:6;2962:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;2919:353:16;3099:29;3113:6;3121;3099:13;:29::i;:::-;3166:28;;-1:-1:-1;;;3166:28:16;;-1:-1:-1;;;;;3166:20:16;;;;;:28;;3187:6;;3166:28;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3166:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3166:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3166:28:16;;;;;;;;;:33;3143:118;;;;-1:-1:-1;;;3143:118:16;;;;;;;;722:345;866:18;895:6;-1:-1:-1;;;;;887:26:16;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;887:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;887:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;887:28:16;;;;;;;;;946:58;;-1:-1:-1;;;946:58:16;;866:49;;-1:-1:-1;;;;;;946:31:16;;;;;:58;;978:6;;986:9;;997:6;;946:58;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;946:58:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;946:58:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;946:58:16;;;;;;;;;925:135;;;;-1:-1:-1;;;925:135:16;;;;;;;;547:169;605:7;637:1;632;:6;;624:39;;;;-1:-1:-1;;;624:39:16;;;;;;;;;-1:-1:-1;685:5:16;;;547:169;;;;;:::o;1073:387::-;-1:-1:-1;;;;;1193:23:16;;498:42;1193:23;1189:265;;;1232:9;-1:-1:-1;;;;;1232:14:16;1253:6;1232:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1232:32:16;;1189:265;;;1335:6;-1:-1:-1;;;;;1327:26:16;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1327:28:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1327:28:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1327:28:16;;;;;;;;;-1:-1:-1;;;;;1320:45:16;;1366:9;1377:6;1320:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1320:64:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1320:64:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1320:64:16;;;;;;;;;1295:148;;;;-1:-1:-1;;;1295:148:16;;;;;;;;834:176:32;892:7;923:5;;;946:6;;;;938:46;;;;-1:-1:-1;;;938:46:32;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:32:o;514:160:24:-;599:4;622:45;634:12;648:9;664:1;622:11;:45::i;2311:208::-;2402:4;2442:33;2462:12;2442:19;:33::i;:::-;-1:-1:-1;;;;;2425:76:24;;2502:9;2425:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2425:87:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2425:87:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2425:87:24;;;;;;;;1117:355;1215:4;1231:16;1250:33;1270:12;1250:19;:33::i;:::-;1294:51;;-1:-1:-1;;;1294:51:24;;1231:52;;-1:-1:-1;;;;;;1294:28:24;;;;;:51;;1231:52;;1333:11;;1294:51;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1294:51:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1294:51:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1294:51:24;;;;;;;;;-1:-1:-1;1363:102:24;;-1:-1:-1;;;1363:102:24;;-1:-1:-1;;;;;1363:59:24;;;;;:102;;1423:11;;1436:12;;1461:2;1455:3;:8;;1363:102;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1363:102:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1363:102:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1363:102:24;;;;;;;;;1356:109;1117:355;-1:-1:-1;;;;;1117:355:24:o;2525:212::-;2618:4;2658:33;2678:12;2658:19;:33::i;:::-;-1:-1:-1;;;;;2641:76:24;;2718:11;2641:89;;;;;;;;;;;;;;;;1022:293:25;1111:9;1140:12;-1:-1:-1;;;;;1131:32:25;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1131:34:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1131:34:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1131:34:25;;;;;;;;;1111:55;;1185:1;-1:-1:-1;;;;;1177:17:25;;1232:3;1216:21;;1208:30;;;1260:1;-1:-1:-1;;;;;1252:14:25;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1252:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1252:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1252:16:25;;;;;;;;;1290:1;-1:-1:-1;;;;;1282:14:25;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1282:16:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1282:16:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1282:16:25;;;;;;;;;1177:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1177:131:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1177:131:25;;;;1022:293;;;:::o;1321:::-;1410:9;1439:12;-1:-1:-1;;;;;1430:32:25;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1430:34:25;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1430:34:25;;;;;;;;;1410:55;;1484:1;-1:-1:-1;;;;;1476:17:25;;1531:3;1515:21;;1507:30;;;1559:1;-1:-1:-1;;;;;1551:14:25;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1274:134:32;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;955:156:24:-;1034:4;1057:47;1069:12;1083:11;1101:1;1057:11;:47::i;1717:160::-;1802:4;1825:45;1839:4;1845:2;1849:11;1867:1;1825:13;:45::i;:::-;1818:52;1717:160;-1:-1:-1;;;;1717:160:24:o;680:269::-;786:4;826:33;846:12;826:19;:33::i;:::-;-1:-1:-1;;;;;809:84:24;;900:9;911:14;932:3;938:2;932:8;809:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;809:133:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;809:133:24;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;809:133:24;;;;;;;;337:171;437:64;;-1:-1:-1;;;437:64:24;;411:7;;288:42;;437:50;;:64;;488:12;;437:64;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;437:64:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;437:64:24;;;;;;;;1732:187:32;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:32;;;;;;;;;;-1:-1:-1;;;1888:5:32;;;1732:187::o;1478:233:24:-;1583:4;1599:14;1616:32;1628:4;1634:13;1616:11;:32::i;:::-;1599:49;;1665:39;1677:2;1681:9;1692:11;1665;:39::i;:::-;1658:46;1478:233;-1:-1:-1;;;;;;1478:233:24:o;773:13659:25:-;;;;;;;;;-1:-1:-1;773:13659:25;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;454:707;;571:3;564:4;556:6;552:17;548:27;538:2;;589:1;586;579:12;538:2;626:6;613:20;648:80;663:64;720:6;663:64;;;648:80;;;639:89;;745:5;770:6;763:5;756:21;800:4;792:6;788:17;778:27;;822:4;817:3;813:14;806:21;;875:6;922:3;914:4;906:6;902:17;897:3;893:27;890:36;887:2;;;939:1;936;929:12;887:2;964:1;949:206;974:6;971:1;968:13;949:206;;;1032:3;1054:37;1087:3;1075:10;1054:37;;;1042:50;;-1:-1;1115:4;1106:14;;;;1134;;;;;996:1;989:9;949:206;;;953:14;531:630;;;;;;;;1187:722;;1315:3;1308:4;1300:6;1296:17;1292:27;1282:2;;1333:1;1330;1323:12;1282:2;1363:6;1357:13;1385:80;1400:64;1457:6;1400:64;;1385:80;1376:89;;1482:5;1507:6;1500:5;1493:21;1537:4;1529:6;1525:17;1515:27;;1559:4;1554:3;1550:14;1543:21;;1612:6;1659:3;1651:4;1643:6;1639:17;1634:3;1630:27;1627:36;1624:2;;;1676:1;1673;1666:12;1624:2;1701:1;1686:217;1711:6;1708:1;1705:13;1686:217;;;1769:3;1791:48;1835:3;1823:10;1791:48;;;1779:61;;-1:-1;1863:4;1854:14;;;;1882;;;;;1733:1;1726:9;1686:217;;1917:128;1992:13;;2010:30;1992:13;2010:30;;2052:134;2130:13;;2148:33;2130:13;2148:33;;2207:336;;;2321:3;2314:4;2306:6;2302:17;2298:27;2288:2;;2339:1;2336;2329:12;2288:2;-1:-1;2359:20;;2399:18;2388:30;;2385:2;;;2431:1;2428;2421:12;2385:2;2465:4;2457:6;2453:17;2441:29;;2516:3;2508:4;2500:6;2496:17;2486:8;2482:32;2479:41;2476:2;;;2533:1;2530;2523:12;2476:2;2281:262;;;;;;2551:174;2649:13;;2667:53;2649:13;2667:53;;2788:663;;2912:4;2900:9;2895:3;2891:19;2887:30;2884:2;;;2930:1;2927;2920:12;2884:2;2948:20;2963:4;2948:20;;;2939:29;-1:-1;3036:1;3068:49;3113:3;3093:9;3068:49;;;3043:75;;-1:-1;3191:2;3224:49;3269:3;3245:22;;;3224:49;;;3217:4;3210:5;3206:16;3199:75;3139:146;3347:2;3380:49;3425:3;3416:6;3405:9;3401:22;3380:49;;;3373:4;3366:5;3362:16;3355:75;3295:146;2878:573;;;;;3458:130;3525:20;;3550:33;3525:20;3550:33;;3736:263;;3851:2;3839:9;3830:7;3826:23;3822:32;3819:2;;;3867:1;3864;3857:12;3819:2;3902:1;3919:64;3975:7;3955:9;3919:64;;4006:1009;;;;;;;;4222:3;4210:9;4201:7;4197:23;4193:33;4190:2;;;4239:1;4236;4229:12;4190:2;4274:1;4291:53;4336:7;4316:9;4291:53;;;4281:63;;4253:97;4381:2;4399:61;4452:7;4443:6;4432:9;4428:22;4399:61;;;4389:71;;4360:106;4497:2;4515:53;4560:7;4551:6;4540:9;4536:22;4515:53;;;4505:63;;4476:98;4605:2;4623:53;4668:7;4659:6;4648:9;4644:22;4623:53;;;4613:63;;4584:98;4713:3;4732:53;4777:7;4768:6;4757:9;4753:22;4732:53;;;4722:63;;4692:99;4850:3;4839:9;4835:19;4822:33;4875:18;4867:6;4864:30;4861:2;;;4907:1;4904;4897:12;4861:2;4935:64;4991:7;4982:6;4971:9;4967:22;4935:64;;;4925:74;;;;4801:204;4184:831;;;;;;;;;;;5022:491;;;;5160:2;5148:9;5139:7;5135:23;5131:32;5128:2;;;5176:1;5173;5166:12;5128:2;5211:1;5228:53;5273:7;5253:9;5228:53;;;5218:63;;5190:97;5318:2;5336:53;5381:7;5372:6;5361:9;5357:22;5336:53;;;5326:63;;5297:98;5426:2;5444:53;5489:7;5480:6;5469:9;5465:22;5444:53;;;5434:63;;5405:98;5122:391;;;;;;5520:617;;;;;5675:3;5663:9;5654:7;5650:23;5646:33;5643:2;;;5692:1;5689;5682:12;5643:2;5727:1;5744:53;5789:7;5769:9;5744:53;;;5734:63;;5706:97;5834:2;5852:53;5897:7;5888:6;5877:9;5873:22;5852:53;;;5842:63;;5813:98;5942:2;5960:53;6005:7;5996:6;5985:9;5981:22;5960:53;;;5950:63;;5921:98;6050:2;6068:53;6113:7;6104:6;6093:9;6089:22;6068:53;;;6058:63;;6029:98;5637:500;;;;;;;;6144:366;;;6265:2;6253:9;6244:7;6240:23;6236:32;6233:2;;;6281:1;6278;6271:12;6233:2;6316:1;6333:53;6378:7;6358:9;6333:53;;;6323:63;;6295:97;6423:2;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;;;6431:63;;6402:98;6227:283;;;;;;6517:617;;;;;6672:3;6660:9;6651:7;6647:23;6643:33;6640:2;;;6689:1;6686;6679:12;6640:2;6724:1;6741:53;6786:7;6766:9;6741:53;;;6731:63;;6703:97;6831:2;6849:53;6894:7;6885:6;6874:9;6870:22;6849:53;;;6839:63;;6810:98;6939:2;6957:53;7002:7;6993:6;6982:9;6978:22;6957:53;;;6947:63;;6918:98;7047:2;7065:53;7110:7;7101:6;7090:9;7086:22;7065:53;;7141:377;;7270:2;7258:9;7249:7;7245:23;7241:32;7238:2;;;7286:1;7283;7276:12;7238:2;7321:31;;7372:18;7361:30;;7358:2;;;7404:1;7401;7394:12;7358:2;7424:78;7494:7;7485:6;7474:9;7470:22;7424:78;;7525:392;;7665:2;7653:9;7644:7;7640:23;7636:32;7633:2;;;7681:1;7678;7671:12;7633:2;7716:24;;7760:18;7749:30;;7746:2;;;7792:1;7789;7782:12;7746:2;7812:89;7893:7;7884:6;7873:9;7869:22;7812:89;;7924:257;;8036:2;8024:9;8015:7;8011:23;8007:32;8004:2;;;8052:1;8049;8042:12;8004:2;8087:1;8104:61;8157:7;8137:9;8104:61;;8188:263;;8303:2;8291:9;8282:7;8278:23;8274:32;8271:2;;;8319:1;8316;8309:12;8271:2;8354:1;8371:64;8427:7;8407:9;8371:64;;8458:303;;8593:2;8581:9;8572:7;8568:23;8564:32;8561:2;;;8609:1;8606;8599:12;8561:2;8644:1;8661:84;8737:7;8717:9;8661:84;;8768:311;;8907:2;8895:9;8886:7;8882:23;8878:32;8875:2;;;8923:1;8920;8913:12;8875:2;8958:1;8975:88;9055:7;9035:9;8975:88;;9356:741;;;;;;9530:3;9518:9;9509:7;9505:23;9501:33;9498:2;;;9547:1;9544;9537:12;9498:2;9582:1;9599:53;9644:7;9624:9;9599:53;;;9589:63;;9561:97;9689:2;9707:53;9752:7;9743:6;9732:9;9728:22;9707:53;;;9697:63;;9668:98;9797:2;9815:53;9860:7;9851:6;9840:9;9836:22;9815:53;;;9805:63;;9776:98;9933:2;9922:9;9918:18;9905:32;9957:18;9949:6;9946:30;9943:2;;;9989:1;9986;9979:12;9943:2;10017:64;10073:7;10064:6;10053:9;10049:22;10017:64;;;10007:74;;;;9884:203;9492:605;;;;;;;;;10105:173;;10192:46;10234:3;10226:6;10192:46;;;-1:-1;;10267:4;10258:14;;10185:93;10286:142;10377:45;10416:5;10377:45;;;10372:3;10365:58;10359:69;;;10435:103;10508:24;10526:5;10508:24;;10696:690;;10841:54;10889:5;10841:54;;;10908:86;10987:6;10982:3;10908:86;;;10901:93;;11015:56;11065:5;11015:56;;;11091:7;11119:1;11104:260;11129:6;11126:1;11123:13;11104:260;;;11196:6;11190:13;11217:63;11276:3;11261:13;11217:63;;;11210:70;;11297:60;11350:6;11297:60;;;11287:70;-1:-1;;11151:1;11144:9;11104:260;;;-1:-1;11377:3;;10820:566;-1:-1;;;;;10820:566;11394:113;11477:24;11495:5;11477:24;;11537:310;;11669:88;11750:6;11745:3;11669:88;;;11662:95;;11769:43;11805:6;11800:3;11793:5;11769:43;;;-1:-1;;11825:16;;11655:192;11855:343;;11965:38;11997:5;11965:38;;;12015:70;12078:6;12073:3;12015:70;;;12008:77;;12090:52;12135:6;12130:3;12123:4;12116:5;12112:16;12090:52;;;12163:29;12185:6;12163:29;;;12154:39;;;;11945:253;-1:-1;;;11945:253;12205:356;;12333:38;12365:5;12333:38;;;12383:88;12464:6;12459:3;12383:88;;;12376:95;;12476:52;12521:6;12516:3;12509:4;12502:5;12498:16;12476:52;;;12540:16;;;;;12313:248;-1:-1;;12313:248;12923:327;;13083:67;13147:2;13142:3;13083:67;;;13183:29;13163:50;;13241:2;13232:12;;13069:181;-1:-1;;13069:181;13259:330;;13419:67;13483:2;13478:3;13419:67;;;13519:32;13499:53;;13580:2;13571:12;;13405:184;-1:-1;;13405:184;13598:330;;13758:67;13822:2;13817:3;13758:67;;;13858:32;13838:53;;13919:2;13910:12;;13744:184;-1:-1;;13744:184;13937:378;;14097:67;14161:2;14156:3;14097:67;;;14197:34;14177:55;;-1:-1;;;14261:2;14252:12;;14245:33;14306:2;14297:12;;14083:232;-1:-1;;14083:232;14324:320;;14484:67;14548:2;14543:3;14484:67;;;-1:-1;;;14564:43;;14635:2;14626:12;;14470:174;-1:-1;;14470:174;14653:330;;14813:67;14877:2;14872:3;14813:67;;;14913:32;14893:53;;14974:2;14965:12;;14799:184;-1:-1;;14799:184;14992:372;;15152:67;15216:2;15211:3;15152:67;;;15252:34;15232:55;;-1:-1;;;15316:2;15307:12;;15300:27;15355:2;15346:12;;15138:226;-1:-1;;15138:226;15373:330;;15533:67;15597:2;15592:3;15533:67;;;15633:32;15613:53;;15694:2;15685:12;;15519:184;-1:-1;;15519:184;15712:329;;15872:67;15936:2;15931:3;15872:67;;;15972:31;15952:52;;16032:2;16023:12;;15858:183;-1:-1;;15858:183;16050:325;;16210:67;16274:2;16269:3;16210:67;;;16310:27;16290:48;;16366:2;16357:12;;16196:179;-1:-1;;16196:179;16384:296;;16561:83;16642:1;16637:3;16561:83;;16689:332;;16849:67;16913:2;16908:3;16849:67;;;16949:34;16929:55;;17012:2;17003:12;;16835:186;-1:-1;;16835:186;17030:329;;17190:67;17254:2;17249:3;17190:67;;;17290:31;17270:52;;17350:2;17341:12;;17176:183;-1:-1;;17176:183;17368:330;;17528:67;17592:2;17587:3;17528:67;;;17628:32;17608:53;;17689:2;17680:12;;17514:184;-1:-1;;17514:184;17707:323;;17867:67;17931:2;17926:3;17867:67;;;17967:25;17947:46;;18021:2;18012:12;;17853:177;-1:-1;;17853:177;18158:439;;18358:93;18447:3;18438:6;18358:93;;;18351:100;;18469:103;18568:3;18559:6;18551;18469:103;;18604:370;;18802:147;18945:3;18802:147;;18981:213;19099:2;19084:18;;19113:71;19088:9;19157:6;19113:71;;19201:647;19429:3;19414:19;;19444:79;19418:9;19496:6;19444:79;;;19534:72;19602:2;19591:9;19587:18;19578:6;19534:72;;;19617;19685:2;19674:9;19670:18;19661:6;19617:72;;;19737:9;19731:4;19727:20;19722:2;19711:9;19707:18;19700:48;19762:76;19833:4;19824:6;19762:76;;19855:435;20029:2;20014:18;;20043:71;20018:9;20087:6;20043:71;;;20125:72;20193:2;20182:9;20178:18;20169:6;20125:72;;;20208;20276:2;20265:9;20261:18;20252:6;20208:72;;20297:324;20443:2;20428:18;;20457:71;20432:9;20501:6;20457:71;;;20539:72;20607:2;20596:9;20592:18;20583:6;20539:72;;20628:361;20796:2;20810:47;;;20781:18;;20871:108;20781:18;20965:6;20871:108;;20996:435;21170:2;21155:18;;21184:71;21159:9;21228:6;21184:71;;;21266:72;21334:2;21323:9;21319:18;21310:6;21266:72;;21438:301;21576:2;21590:47;;;21561:18;;21651:78;21561:18;21715:6;21651:78;;21746:407;21937:2;21951:47;;;21922:18;;22012:131;21922:18;22012:131;;22160:407;22351:2;22365:47;;;22336:18;;22426:131;22336:18;22426:131;;22574:407;22765:2;22779:47;;;22750:18;;22840:131;22750:18;22840:131;;22988:407;23179:2;23193:47;;;23164:18;;23254:131;23164:18;23254:131;;23402:407;23593:2;23607:47;;;23578:18;;23668:131;23578:18;23668:131;;23816:407;24007:2;24021:47;;;23992:18;;24082:131;23992:18;24082:131;;24230:407;24421:2;24435:47;;;24406:18;;24496:131;24406:18;24496:131;;24644:407;24835:2;24849:47;;;24820:18;;24910:131;24820:18;24910:131;;25058:407;25249:2;25263:47;;;25234:18;;25324:131;25234:18;25324:131;;25472:407;25663:2;25677:47;;;25648:18;;25738:131;25648:18;25738:131;;25886:407;26077:2;26091:47;;;26062:18;;26152:131;26062:18;26152:131;;26300:407;26491:2;26505:47;;;26476:18;;26566:131;26476:18;26566:131;;26714:407;26905:2;26919:47;;;26890:18;;26980:131;26890:18;26980:131;;27128:407;27319:2;27333:47;;;27304:18;;27394:131;27304:18;27394:131;;27542:213;27660:2;27645:18;;27674:71;27649:9;27718:6;27674:71;;27762:324;27908:2;27893:18;;27922:71;27897:9;27966:6;27922:71;;28535:256;28597:2;28591:9;28623:17;;;28698:18;28683:34;;28719:22;;;28680:62;28677:2;;;28755:1;28752;28745:12;28677:2;28771;28764:22;28575:216;;-1:-1;28575:216;28798:304;;28957:18;28949:6;28946:30;28943:2;;;28989:1;28986;28979:12;28943:2;-1:-1;29024:4;29012:17;;;29077:15;;28880:222;29420:151;29544:4;29535:14;;29492:79;29578:137;29681:12;;29652:63;30095:178;30213:19;;;30262:4;30253:14;;30206:67;30453:144;30588:3;30566:31;-1:-1;30566:31;30777:91;;30839:24;30857:5;30839:24;;30981:85;31047:13;31040:21;;31023:43;31073:72;31135:5;31118:27;31152:111;;31234:24;31252:5;31234:24;;31270:121;-1:-1;;;;;31332:54;;31315:76;31477:129;;31564:37;31595:5;31564:37;;31857:145;31938:6;31933:3;31928;31915:30;-1:-1;31994:1;31976:16;;31969:27;31908:94;32011:268;32076:1;32083:101;32097:6;32094:1;32091:13;32083:101;;;32164:11;;;32158:18;32145:11;;;32138:39;32119:2;32112:10;32083:101;;;32199:6;32196:1;32193:13;32190:2;;;-1:-1;;32264:1;32246:16;;32239:27;32060:219;32287:97;32375:2;32355:14;-1:-1;;32351:28;;32335:49;32392:117;32461:24;32479:5;32461:24;;;32454:5;32451:35;32441:2;;32500:1;32497;32490:12;32656:111;32722:21;32737:5;32722:21;;32774:117;32843:24;32861:5;32843:24;;32898:157;32987:44;33025:5;32987:44;", "source": "/*\n Dedge's Aave and Compound manager\n*/\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\n\nimport \"../lib/compound/CompoundBase.sol\";\n\nimport \"../lib/dapphub/Guard.sol\";\n\nimport \"../lib/uniswap/UniswapLiteBase.sol\";\n\nimport \"../interfaces/aave/ILendingPoolAddressesProvider.sol\";\nimport \"../interfaces/aave/ILendingPool.sol\";\nimport \"../interfaces/aave/ILendingPoolParametersProvider.sol\";\n\nimport \"../interfaces/compound/ICompoundPriceOracle.sol\";\nimport \"../interfaces/compound/IComptroller.sol\";\nimport \"../interfaces/compound/ICEther.sol\";\nimport \"../interfaces/compound/ICToken.sol\";\n\nimport \"../interfaces/IERC20.sol\";\n\nimport \"../registries/AddressRegistry.sol\";\n\nimport \"../proxies/DACProxy.sol\";\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\n\ncontract DedgeCompoundManager is UniswapLiteBase, CompoundBase {\n using SafeMath for uint;\n\n struct SwapOperationCalldata {\n address addressRegistryAddress;\n address oldCTokenAddress;\n address newCTokenAddress;\n }\n\n function _proxyGuardPermit(address payable proxyAddress, address src) internal {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).permit(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _proxyGuardForbid(address payable proxyAddress, address src) internal {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).forbid(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function swapDebtPostLoan(\n uint _loanAmount,\n uint _aaveFee,\n uint _protocolFee,\n bytes calldata _data\n ) external {\n SwapOperationCalldata memory soCalldata = abi.decode(_data, (SwapOperationCalldata));\n\n AddressRegistry addressRegistry = AddressRegistry(soCalldata.addressRegistryAddress);\n\n address oldCTokenAddress = soCalldata.oldCTokenAddress;\n address newCTokenAddress = soCalldata.newCTokenAddress;\n\n uint debtAmount = _loanAmount.add(_aaveFee).add(_protocolFee);\n\n // Note: debtAmount = loanAmount + fees\n // 1. Has ETH from Aave flashloan\n // 2. Converts ETH to oldCToken underlying\n // 3. Repays oldCToken underlying\n // 4. Calculates new amount to borrow from new token to repay debtAmount\n // 5. Borrows from new token\n // 6. Convert new token to ETH\n\n // Steps 2 + 3\n // Converts ETH to oldCToken underlying and repay\n // Unless old target underlying is already ether\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n repayBorrow(oldCTokenAddress, _loanAmount);\n } else {\n // Gets old token underlying and amount\n address oldTokenUnderlying = ICToken(oldCTokenAddress).underlying();\n\n uint oldTokenUnderlyingAmount = _ethToToken(\n oldTokenUnderlying,\n _loanAmount\n );\n\n // Approves CToken proxy and repays them\n IERC20(oldTokenUnderlying)\n .approve(oldCTokenAddress, oldTokenUnderlyingAmount);\n\n // Repays CToken\n repayBorrow(oldCTokenAddress, oldTokenUnderlyingAmount);\n }\n\n // Steps 4, 5, 6\n // Calculates new debt amount to borrow\n // Unless new target underlying is already ether\n if (newCTokenAddress == addressRegistry.CEtherAddress()) {\n borrow(newCTokenAddress, debtAmount);\n } else {\n // Gets new token underlying\n address newTokenUnderlying = ICToken(newCTokenAddress).underlying();\n\n // Calculates amount of old token underlying that needs to be borrowed\n // to repay debts\n uint newTokenUnderlyingAmount = _getTokenToEthOutput(\n newTokenUnderlying,\n debtAmount\n );\n\n // Borrows new debt\n borrow(newCTokenAddress, newTokenUnderlyingAmount);\n\n // Converts to ether\n // Note this part is a bit more strict as we need to have\n // enough ETH to repay Aave\n _tokenToEth(newTokenUnderlying, newTokenUnderlyingAmount, debtAmount);\n }\n }\n\n function swapCollateralPostLoan(\n uint _loanAmount,\n uint _aaveFee,\n uint _protocolFee,\n bytes calldata _data\n ) external {\n SwapOperationCalldata memory soCalldata = abi.decode(_data, (SwapOperationCalldata));\n\n AddressRegistry addressRegistry = AddressRegistry(soCalldata.addressRegistryAddress);\n\n address oldCTokenAddress = soCalldata.oldCTokenAddress;\n address newCTokenAddress = soCalldata.newCTokenAddress;\n\n // 1. Has ETH from Aave flashloan\n // 2. Converts ETH into newCToken underlying\n // 3. Supplies newCToken underlying\n // 4. Redeems oldCToken underlying\n // 5. Converts outCToken underlying to ETH\n // 6. Borrow ETH to repay aave\n\n // Steps 2 + 3\n // Converts ETH to newCToken underlying and supply\n // Unless old target underlying is already ether\n uint repayAmount = _loanAmount.sub(_aaveFee).sub(_protocolFee);\n\n if (newCTokenAddress == addressRegistry.CEtherAddress()) {\n supply(newCTokenAddress, repayAmount);\n } else {\n // Gets new token underlying and converts ETH into newCToken underlying\n address newTokenUnderlying = ICToken(newCTokenAddress).underlying();\n uint newTokenUnderlyingAmount = _ethToToken(\n newTokenUnderlying,\n repayAmount\n );\n\n // Supplies new CTokens\n supply(newCTokenAddress, newTokenUnderlyingAmount);\n }\n\n // Steps 4, 5\n // Redeem CToken underlying\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n redeemUnderlying(oldCTokenAddress, _loanAmount);\n } else {\n // Gets old token underlying and amount to redeem (based on uniswap)\n address oldTokenUnderlying = ICToken(oldCTokenAddress).underlying();\n uint oldTokenUnderlyingAmount = _getTokenToEthOutput(oldTokenUnderlying, _loanAmount);\n\n // Redeems them\n redeemUnderlying(oldCTokenAddress, oldTokenUnderlyingAmount);\n\n // Converts them into ETH\n _tokenToEth(oldTokenUnderlying, oldTokenUnderlyingAmount, _loanAmount);\n }\n }\n\n /*\n Main entry point for swapping collateral / debt\n\n @params:\n\n dedgeCompoundManagerAddress: Dedge Compound Manager address\n dacProxyAddress: User's proxy address\n addressRegistryAddress: AddressRegistry's Address\n oldCTokenAddress: oldCToken address\n oldTokenUnderlyingDelta: Amount of tokens to swap from old c token's underlying\n executeOperationCalldataParams:\n Abi-encoded `data` used by User's proxy's `execute(address, )` function.\n Used to delegatecall to another contract (i.e. this contract) in the context\n of the proxy. This allows us to decouple the logic of handling flashloans\n from the proxy contract. In this specific case, it is expecting the results\n from: (from JS)\n\n ```\n const IDedgeCompoundManager = ethers.utils.Interface(DedgeCompoundManager.abi)\n\n const executeOperationCalldataParams = IDedgeCompoundManager\n .functions\n .swapDebt OR .swapCollateral\n .encode([\n \n ])\n ```\n */\n function swapOperation(\n address dedgeCompoundManagerAddress,\n address payable dacProxyAddress,\n address addressRegistryAddress,\n address oldCTokenAddress, // Old CToken address for [debt|collateral]\n uint oldTokenUnderlyingDelta, // Amount of old tokens to swap to new tokens\n bytes calldata executeOperationCalldataParams\n ) external {\n // Calling from dacProxy context (msg.sender is dacProxy)\n // 1. Get amount of ETH obtained by selling that from Uniswap\n // 2. Flashloans ETH to dacProxy\n\n // Gets registries\n AddressRegistry addressRegistry = AddressRegistry(addressRegistryAddress);\n\n // 1. Get amount of ETH needed\n // If the old target is ether than the ethDebtAmount is just the delta\n uint ethDebtAmount;\n\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n ethDebtAmount = oldTokenUnderlyingDelta;\n } else {\n // Otherwise calculate it from the exchange\n ethDebtAmount = _getEthToTokenOutput(\n ICToken(oldCTokenAddress).underlying(),\n oldTokenUnderlyingDelta\n );\n }\n\n // Injects the target address into calldataParams\n // so user proxy know which address it'll be calling `calldataParams` on\n bytes memory addressAndExecuteOperationCalldataParams = abi.encodePacked(\n abi.encode(dedgeCompoundManagerAddress),\n executeOperationCalldataParams\n );\n\n ILendingPool lendingPool = ILendingPool(\n ILendingPoolAddressesProvider(\n addressRegistry.AaveLendingPoolAddressProviderAddress()\n ).getLendingPool()\n );\n\n // Approve lendingPool to call proxy\n _proxyGuardPermit(dacProxyAddress, address(lendingPool));\n\n // 3. Flashloan ETH with relevant data\n lendingPool.flashLoan(\n dacProxyAddress,\n addressRegistry.AaveEthAddress(),\n ethDebtAmount,\n addressAndExecuteOperationCalldataParams\n );\n\n // Forbids lendingPool to call proxy\n _proxyGuardForbid(dacProxyAddress, address(lendingPool));\n }\n\n // Clears dust debt by swapping old debt into new debt\n function clearDebtDust(\n address addressRegistryAddress,\n address oldCTokenAddress,\n uint oldTokenUnderlyingDustAmount,\n address newCTokenAddress\n ) public payable {\n // i.e. Has 0.1 ETH (oldCToken) debt 900 DAI (newCToken)\n // wants to have it all in DAI\n\n // 0. Calculates 0.1 ETH equilavent in DAI\n // 1. Borrows out 0.1 ETH equilavent in DAI (~10 DAI as of march 2020)\n // 2. Convert 10 DAI into 0.1 ETH\n // 3. Repay 0.1 ETH\n\n require(oldCTokenAddress != newCTokenAddress, \"clear-debt-same-address\");\n\n AddressRegistry addressRegistry = AddressRegistry(addressRegistryAddress);\n\n uint borrowAmount;\n address oldTokenUnderlying;\n address newTokenUnderlying;\n\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n // ETH -> Token\n newTokenUnderlying = ICToken(newCTokenAddress).underlying();\n\n // Calculates ETH equilavent in token\n borrowAmount = _getTokenToEthOutput(newTokenUnderlying, oldTokenUnderlyingDustAmount);\n\n // Borrows out equilavent token\n borrow(newCTokenAddress, borrowAmount);\n\n // Converts token to ETH\n _tokenToEth(newTokenUnderlying, borrowAmount, oldTokenUnderlyingDustAmount);\n } else if (newCTokenAddress == addressRegistry.CEtherAddress()) {\n // Token -> ETH\n oldTokenUnderlying = ICToken(oldCTokenAddress).underlying();\n\n // Calculates token equilavent in ETH\n borrowAmount = _getEthToTokenOutput(oldTokenUnderlying, oldTokenUnderlyingDustAmount);\n\n // Borrows out equilavent ETH\n borrow(newCTokenAddress, borrowAmount);\n\n // Converts ETH to token\n _ethToToken(oldTokenUnderlying, borrowAmount, oldTokenUnderlyingDustAmount);\n } else {\n // token -> token\n oldTokenUnderlying = ICToken(oldCTokenAddress).underlying();\n newTokenUnderlying = ICToken(newCTokenAddress).underlying();\n\n // Calculates eth borrow amount\n uint ethAmount = _getEthToTokenOutput(oldTokenUnderlying, oldTokenUnderlyingDustAmount);\n\n // Calculates token borrow amount\n borrowAmount = _getTokenToEthOutput(newTokenUnderlying, ethAmount);\n\n // Borrows out equilavent token\n borrow(newCTokenAddress, borrowAmount);\n\n // Converts old token to target token\n _tokenToEth(newTokenUnderlying, borrowAmount, ethAmount);\n _ethToToken(oldTokenUnderlying, ethAmount, oldTokenUnderlyingDustAmount);\n }\n\n // Repays borrowed\n repayBorrow(oldCTokenAddress, oldTokenUnderlyingDustAmount);\n }\n\n function clearCollateralDust(\n address addressRegistryAddress,\n address oldCTokenAddress,\n uint oldTokenUnderlyingAmount,\n address newCTokenAddress\n ) public payable {\n // i.e. Has 10 ETH collateral and 10 DAI collateral\n // wants to have it all in ETH\n\n // 1. Redeems 10 DAI collateral\n // 2. Converts it to ETH\n // 3. Puts it into ETH\n\n // More abstractly,\n // 1. Redeems tokens\n // 2. Convert it to other token\n // 3. Put other token in\n\n require(oldCTokenAddress != newCTokenAddress, \"clear-collateral-same-address\");\n\n uint supplyAmount;\n AddressRegistry addressRegistry = AddressRegistry(addressRegistryAddress);\n\n // Redeems collateral\n redeemUnderlying(oldCTokenAddress, oldTokenUnderlyingAmount);\n\n if (oldCTokenAddress == addressRegistry.CEtherAddress()) {\n // ETH -> Token\n supplyAmount = _ethToToken(\n ICToken(newCTokenAddress).underlying(),\n oldTokenUnderlyingAmount\n );\n } else if (newCTokenAddress == addressRegistry.CEtherAddress()) {\n // Token -> ETH\n supplyAmount = _tokenToEth(\n ICToken(oldCTokenAddress).underlying(),\n oldTokenUnderlyingAmount\n );\n } else {\n // Token -> Token\n supplyAmount = _tokenToToken(\n ICToken(oldCTokenAddress).underlying(),\n ICToken(newCTokenAddress).underlying(),\n oldTokenUnderlyingAmount\n );\n }\n\n // Supplies collateral\n supply(newCTokenAddress, supplyAmount);\n }\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeCompoundManager.sol", "ast": { @@ -20401,18 +20401,12 @@ "1": { "events": {}, "links": {}, - "address": "0xd1a3438BbC0EAAE24EC7b94ca471Ebca9c371a8d", - "transactionHash": "0xe5dc2f06f9f68b378000f2f4ab198663468d6d63c82697ea1691b8ca6c0ff42d" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0x254dffcd3277C0b1660F6d42EFbB754edaBAbC2B", - "transactionHash": "0x7faa9ac05ee2a838f157ff8cd3e5cb0af5413316e2d870954c5bbe7c0d02c94c" + "address": "0x16493dfB0281bA27C8B712f6Eb8eC32bcc50EAEc", + "transactionHash": "0x98046a27999965dfff9390719dec08d335b3f480fafa14249a17956afb392b36" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T05:45:42.965Z", + "updatedAt": "2020-04-03T06:28:59.320Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeExitManager.json b/packages/smart-contracts/artifacts/DedgeExitManager.json index ee5dd8c..abf86f4 100644 --- a/packages/smart-contracts/artifacts/DedgeExitManager.json +++ b/packages/smart-contracts/artifacts/DedgeExitManager.json @@ -98,11 +98,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"_approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalEthDebtAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dedgeExitManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"exitPositions\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"exitPositionsPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol\":\"DedgeExitManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol\":{\"keccak256\":\"0x98f7835be71453686e6bef2dae399bb08be4cfb6dfce3ead2e1d29c29df91d51\",\"urls\":[\"bzz-raw://3ffe31654a7be90ea4a7966fc387c47444bfe52cd29cfdc72bcfc84854096b70\",\"dweb:/ipfs/QmWKWZdeaTkS4LbdD9S26UHU13ki3Svq2zjMiNRwHpR4AH\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50611ef2806100206000396000f3fe6080604052600436106100345760003560e01c8063642c3dfa146100365780636889dfe11461005f5780637b7d722514610088575b005b34801561004257600080fd5b5061005d60048036036100589190810190611751565b6100b1565b005b34801561006b57600080fd5b50610086600480360361008191908101906117e3565b610309565b005b34801561009457600080fd5b506100af60048036036100aa9190810190611630565b610525565b005b60008390506060866040516020016100c99190611aa2565b60405160208183030381529060405284846040516020016100ec93929190611a67565b604051602081830303815290604052905060008273ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014557600080fd5b505afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061017d9190810190611607565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c257600080fd5b505afa1580156101d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101fa9190810190611607565b9050610206878261067f565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de888573ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561026957600080fd5b505afa15801561027d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102a19190810190611607565b8c866040518563ffffffff1660e01b81526004016102c29493929190611abd565b600060405180830381600087803b1580156102dc57600080fd5b505af11580156102f0573d6000803e3d6000fd5b505050506102fe8782610881565b505050505050505050565b61031161127f565b828261032091908101906116e7565b905060008160200151905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561037357600080fd5b505afa158015610387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103ab9190810190611607565b905060008090505b83604001515181101561040e5761040182856040015183815181106103d457fe5b602002602001015160000151866040015184815181106103f057fe5b602002602001015160200151610a83565b80806001019150506103b3565b50600080600090505b84606001515181101561047657610465838660600151838151811061043857fe5b6020026020010151600001518760600151848151811061045457fe5b602002602001015160200151610b64565b820191508080600101915050610417565b50836000015173ffffffffffffffffffffffffffffffffffffffff166104c9886104bb8b6104ad8e87610c4390919063ffffffff16565b610c4390919063ffffffff16565b610c4390919063ffffffff16565b6040516104d590611a8d565b60006040518083038185875af1925050503d8060008114610512576040519150601f19603f3d011682016040523d82523d6000602084013e610517565b606091505b505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105a59190810190611607565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016105e6929190611b09565b602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610638919081019061166c565b15151461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190611bcb565b60405180910390fd5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c757600080fd5b505afa1580156106db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106ff91908101906116be565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107ae9190810190611695565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082c9190810190611695565b6040518463ffffffff1660e01b815260040161084a93929190611b32565b600060405180830381600087803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c957600080fd5b505afa1580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061090191908101906116be565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561097857600080fd5b505afa15801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109b09190810190611695565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156109f657600080fd5b505afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2e9190810190611695565b6040518463ffffffff1660e01b8152600401610a4c93929190611b32565b600060405180830381600087803b158015610a6657600080fd5b505af1158015610a7a573d6000803e3d6000fd5b50505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610b545760008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610afe57600080fd5b505afa158015610b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b369190810190611607565b90506000610b448284610c8d565b9050610b508282610d28565b5050505b610b5f838383610d3e565b505050565b6000610b708383610eb5565b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bac57819050610c3c565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c2c9190810190611607565b9050610c388184610f8c565b9150505b9392505050565b6000610c8583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fa2565b905092915050565b6000610c9883610ffd565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401610cd09190611beb565b60206040518083038186803b158015610ce857600080fd5b505afa158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d209190810190611728565b905092915050565b6000610d36838360016110a3565b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd8578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610dba57600080fd5b505af1158015610dce573d6000803e3d6000fd5b5050505050610eb0565b610de28282610525565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401610e1d9190611beb565b602060405180830381600087803b158015610e3757600080fd5b505af1158015610e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6f9190810190611728565b14610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690611bab565b60405180910390fd5b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b8152600401610ef09190611beb565b602060405180830381600087803b158015610f0a57600080fd5b505af1158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f429190810190611728565b905060008114610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90611b8b565b60405180910390fd5b505050565b6000610f9a83836001611147565b905092915050565b6000838311158290610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19190611b69565b60405180910390fd5b5060008385039050809150509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161104c9190611aa2565b60206040518083038186803b15801561106457600080fd5b505afa158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061109c9190810190611607565b9050919050565b60006110ae84610ffd565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b81526004016110ec929190611c06565b6020604051808303818588803b15801561110557600080fd5b505af1158015611119573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525061113e9190810190611728565b90509392505050565b60008061115385610ffd565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401611190929190611b09565b602060405180830381600087803b1580156111aa57600080fd5b505af11580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111e2919081019061166c565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b815260040161122393929190611c2f565b602060405180830381600087803b15801561123d57600080fd5b505af1158015611251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112759190810190611728565b9150509392505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b6000813590506112e281611e25565b92915050565b6000815190506112f781611e25565b92915050565b60008135905061130c81611e3c565b92915050565b600082601f83011261132357600080fd5b813561133661133182611c93565b611c66565b9150818183526020840193506020810190508385604084028201111561135b57600080fd5b60005b8381101561138b578161137188826114a1565b84526020840193506040830192505060018101905061135e565b5050505092915050565b600082601f8301126113a657600080fd5b81356113b96113b482611cbb565b611c66565b915081818352602084019350602081019050838560408402820111156113de57600080fd5b60005b8381101561140e57816113f488826114ed565b8452602084019350604083019250506001810190506113e1565b5050505092915050565b60008151905061142781611e53565b92915050565b60008151905061143c81611e6a565b92915050565b60008083601f84011261145457600080fd5b8235905067ffffffffffffffff81111561146d57600080fd5b60208301915083600182028301111561148557600080fd5b9250929050565b60008151905061149b81611e81565b92915050565b6000604082840312156114b357600080fd5b6114bd6040611c66565b905060006114cd848285016112d3565b60008301525060206114e1848285016115dd565b60208301525092915050565b6000604082840312156114ff57600080fd5b6115096040611c66565b90506000611519848285016112d3565b600083015250602061152d848285016115dd565b60208301525092915050565b60006080828403121561154b57600080fd5b6115556080611c66565b90506000611565848285016112fd565b6000830152506020611579848285016112d3565b602083015250604082013567ffffffffffffffff81111561159957600080fd5b6115a584828501611395565b604083015250606082013567ffffffffffffffff8111156115c557600080fd5b6115d184828501611312565b60608301525092915050565b6000813590506115ec81611e98565b92915050565b60008151905061160181611e98565b92915050565b60006020828403121561161957600080fd5b6000611627848285016112e8565b91505092915050565b6000806040838503121561164357600080fd5b6000611651858286016112d3565b9250506020611662858286016115dd565b9150509250929050565b60006020828403121561167e57600080fd5b600061168c84828501611418565b91505092915050565b6000602082840312156116a757600080fd5b60006116b58482850161142d565b91505092915050565b6000602082840312156116d057600080fd5b60006116de8482850161148c565b91505092915050565b6000602082840312156116f957600080fd5b600082013567ffffffffffffffff81111561171357600080fd5b61171f84828501611539565b91505092915050565b60006020828403121561173a57600080fd5b6000611748848285016115f2565b91505092915050565b60008060008060008060a0878903121561176a57600080fd5b600061177889828a016115dd565b965050602061178989828a016112d3565b955050604061179a89828a016112fd565b94505060606117ab89828a016112d3565b935050608087013567ffffffffffffffff8111156117c857600080fd5b6117d489828a01611442565b92509250509295509295509295565b6000806000806000608086880312156117fb57600080fd5b6000611809888289016115dd565b955050602061181a888289016115dd565b945050604061182b888289016115dd565b935050606086013567ffffffffffffffff81111561184857600080fd5b61185488828901611442565b92509250509295509295909350565b61186c81611d9c565b82525050565b61187b81611d26565b82525050565b61188a81611d56565b82525050565b600061189c8385611d0a565b93506118a9838584611dd2565b82840190509392505050565b60006118c082611ce3565b6118ca8185611cf9565b93506118da818560208601611de1565b6118e381611e14565b840191505092915050565b60006118f982611ce3565b6119038185611d0a565b9350611913818560208601611de1565b80840191505092915050565b600061192a82611cee565b6119348185611d15565b9350611944818560208601611de1565b61194d81611e14565b840191505092915050565b6000611965602983611d15565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b60006119cb601d83611d15565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000611a0b600083611d0a565b9150600082019050919050565b6000611a25602083611d15565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b611a6181611d92565b82525050565b6000611a7382866118ee565b9150611a80828486611890565b9150819050949350505050565b6000611a98826119fe565b9150819050919050565b6000602082019050611ab76000830184611872565b92915050565b6000608082019050611ad26000830187611863565b611adf6020830186611872565b611aec6040830185611a58565b8181036060830152611afe81846118b5565b905095945050505050565b6000604082019050611b1e6000830185611872565b611b2b6020830184611a58565b9392505050565b6000606082019050611b476000830186611881565b611b546020830185611881565b611b616040830184611881565b949350505050565b60006020820190508181036000830152611b83818461191f565b905092915050565b60006020820190508181036000830152611ba481611958565b9050919050565b60006020820190508181036000830152611bc4816119be565b9050919050565b60006020820190508181036000830152611be481611a18565b9050919050565b6000602082019050611c006000830184611a58565b92915050565b6000604082019050611c1b6000830185611a58565b611c286020830184611a58565b9392505050565b6000606082019050611c446000830186611a58565b611c516020830185611a58565b611c5e6040830184611a58565b949350505050565b6000604051905081810181811067ffffffffffffffff82111715611c8957600080fd5b8060405250919050565b600067ffffffffffffffff821115611caa57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115611cd257600080fd5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611d3182611d72565b9050919050565b6000611d4382611d72565b9050919050565b60008115159050919050565b6000819050919050565b6000611d6b82611d26565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611da782611dae565b9050919050565b6000611db982611dc0565b9050919050565b6000611dcb82611d72565b9050919050565b82818337600083830152505050565b60005b83811015611dff578082015181840152602081019050611de4565b83811115611e0e576000848401525b50505050565b6000601f19601f8301169050919050565b611e2e81611d26565b8114611e3957600080fd5b50565b611e4581611d38565b8114611e5057600080fd5b50565b611e5c81611d4a565b8114611e6757600080fd5b50565b611e7381611d56565b8114611e7e57600080fd5b50565b611e8a81611d60565b8114611e9557600080fd5b50565b611ea181611d92565b8114611eac57600080fd5b5056fea365627a7a72315820d4535111e47e76ba1c1532944b21bea901b6f14e2064c60a2463ff786e419f396c6578706572696d656e74616cf564736f6c63430005100040", - "deployedBytecode": "0x6080604052600436106100345760003560e01c8063642c3dfa146100365780636889dfe11461005f5780637b7d722514610088575b005b34801561004257600080fd5b5061005d60048036036100589190810190611751565b6100b1565b005b34801561006b57600080fd5b50610086600480360361008191908101906117e3565b610309565b005b34801561009457600080fd5b506100af60048036036100aa9190810190611630565b610525565b005b60008390506060866040516020016100c99190611aa2565b60405160208183030381529060405284846040516020016100ec93929190611a67565b604051602081830303815290604052905060008273ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014557600080fd5b505afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061017d9190810190611607565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c257600080fd5b505afa1580156101d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101fa9190810190611607565b9050610206878261067f565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de888573ffffffffffffffffffffffffffffffffffffffff166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561026957600080fd5b505afa15801561027d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102a19190810190611607565b8c866040518563ffffffff1660e01b81526004016102c29493929190611abd565b600060405180830381600087803b1580156102dc57600080fd5b505af11580156102f0573d6000803e3d6000fd5b505050506102fe8782610881565b505050505050505050565b61031161127f565b828261032091908101906116e7565b905060008160200151905060008173ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561037357600080fd5b505afa158015610387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103ab9190810190611607565b905060008090505b83604001515181101561040e5761040182856040015183815181106103d457fe5b602002602001015160000151866040015184815181106103f057fe5b602002602001015160200151610a83565b80806001019150506103b3565b50600080600090505b84606001515181101561047657610465838660600151838151811061043857fe5b6020026020010151600001518760600151848151811061045457fe5b602002602001015160200151610b64565b820191508080600101915050610417565b50836000015173ffffffffffffffffffffffffffffffffffffffff166104c9886104bb8b6104ad8e87610c4390919063ffffffff16565b610c4390919063ffffffff16565b610c4390919063ffffffff16565b6040516104d590611a8d565b60006040518083038185875af1925050503d8060008114610512576040519150601f19603f3d011682016040523d82523d6000602084013e610517565b606091505b505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105a59190810190611607565b9050600115158173ffffffffffffffffffffffffffffffffffffffff1663095ea7b385856040518363ffffffff1660e01b81526004016105e6929190611b09565b602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610638919081019061166c565b15151461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190611bcb565b60405180910390fd5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c757600080fd5b505afa1580156106db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106ff91908101906116be565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107ae9190810190611695565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082c9190810190611695565b6040518463ffffffff1660e01b815260040161084a93929190611b32565b600060405180830381600087803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c957600080fd5b505afa1580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061090191908101906116be565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561097857600080fd5b505afa15801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109b09190810190611695565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156109f657600080fd5b505afa158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2e9190810190611695565b6040518463ffffffff1660e01b8152600401610a4c93929190611b32565b600060405180830381600087803b158015610a6657600080fd5b505af1158015610a7a573d6000803e3d6000fd5b50505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610b545760008273ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610afe57600080fd5b505afa158015610b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b369190810190611607565b90506000610b448284610c8d565b9050610b508282610d28565b5050505b610b5f838383610d3e565b505050565b6000610b708383610eb5565b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bac57819050610c3c565b60008373ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c2c9190810190611607565b9050610c388184610f8c565b9150505b9392505050565b6000610c8583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fa2565b905092915050565b6000610c9883610ffd565b73ffffffffffffffffffffffffffffffffffffffff166359e94862836040518263ffffffff1660e01b8152600401610cd09190611beb565b60206040518083038186803b158015610ce857600080fd5b505afa158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d209190810190611728565b905092915050565b6000610d36838360016110a3565b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd8578173ffffffffffffffffffffffffffffffffffffffff16634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610dba57600080fd5b505af1158015610dce573d6000803e3d6000fd5b5050505050610eb0565b610de28282610525565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702836040518263ffffffff1660e01b8152600401610e1d9190611beb565b602060405180830381600087803b158015610e3757600080fd5b505af1158015610e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e6f9190810190611728565b14610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690611bab565b60405180910390fd5b5b505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663852a12e3836040518263ffffffff1660e01b8152600401610ef09190611beb565b602060405180830381600087803b158015610f0a57600080fd5b505af1158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f429190810190611728565b905060008114610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e90611b8b565b60405180910390fd5b505050565b6000610f9a83836001611147565b905092915050565b6000838311158290610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe19190611b69565b60405180910390fd5b5060008385039050809150509392505050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b815260040161104c9190611aa2565b60206040518083038186803b15801561106457600080fd5b505afa158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061109c9190810190611607565b9050919050565b60006110ae84610ffd565b73ffffffffffffffffffffffffffffffffffffffff1663f39b5b9b8484603c42016040518463ffffffff1660e01b81526004016110ec929190611c06565b6020604051808303818588803b15801561110557600080fd5b505af1158015611119573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525061113e9190810190611728565b90509392505050565b60008061115385610ffd565b90508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b8152600401611190929190611b09565b602060405180830381600087803b1580156111aa57600080fd5b505af11580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111e2919081019061166c565b508073ffffffffffffffffffffffffffffffffffffffff166395e3c50b8585603c42016040518463ffffffff1660e01b815260040161122393929190611c2f565b602060405180830381600087803b15801561123d57600080fd5b505af1158015611251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112759190810190611728565b9150509392505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081525090565b6000813590506112e281611e25565b92915050565b6000815190506112f781611e25565b92915050565b60008135905061130c81611e3c565b92915050565b600082601f83011261132357600080fd5b813561133661133182611c93565b611c66565b9150818183526020840193506020810190508385604084028201111561135b57600080fd5b60005b8381101561138b578161137188826114a1565b84526020840193506040830192505060018101905061135e565b5050505092915050565b600082601f8301126113a657600080fd5b81356113b96113b482611cbb565b611c66565b915081818352602084019350602081019050838560408402820111156113de57600080fd5b60005b8381101561140e57816113f488826114ed565b8452602084019350604083019250506001810190506113e1565b5050505092915050565b60008151905061142781611e53565b92915050565b60008151905061143c81611e6a565b92915050565b60008083601f84011261145457600080fd5b8235905067ffffffffffffffff81111561146d57600080fd5b60208301915083600182028301111561148557600080fd5b9250929050565b60008151905061149b81611e81565b92915050565b6000604082840312156114b357600080fd5b6114bd6040611c66565b905060006114cd848285016112d3565b60008301525060206114e1848285016115dd565b60208301525092915050565b6000604082840312156114ff57600080fd5b6115096040611c66565b90506000611519848285016112d3565b600083015250602061152d848285016115dd565b60208301525092915050565b60006080828403121561154b57600080fd5b6115556080611c66565b90506000611565848285016112fd565b6000830152506020611579848285016112d3565b602083015250604082013567ffffffffffffffff81111561159957600080fd5b6115a584828501611395565b604083015250606082013567ffffffffffffffff8111156115c557600080fd5b6115d184828501611312565b60608301525092915050565b6000813590506115ec81611e98565b92915050565b60008151905061160181611e98565b92915050565b60006020828403121561161957600080fd5b6000611627848285016112e8565b91505092915050565b6000806040838503121561164357600080fd5b6000611651858286016112d3565b9250506020611662858286016115dd565b9150509250929050565b60006020828403121561167e57600080fd5b600061168c84828501611418565b91505092915050565b6000602082840312156116a757600080fd5b60006116b58482850161142d565b91505092915050565b6000602082840312156116d057600080fd5b60006116de8482850161148c565b91505092915050565b6000602082840312156116f957600080fd5b600082013567ffffffffffffffff81111561171357600080fd5b61171f84828501611539565b91505092915050565b60006020828403121561173a57600080fd5b6000611748848285016115f2565b91505092915050565b60008060008060008060a0878903121561176a57600080fd5b600061177889828a016115dd565b965050602061178989828a016112d3565b955050604061179a89828a016112fd565b94505060606117ab89828a016112d3565b935050608087013567ffffffffffffffff8111156117c857600080fd5b6117d489828a01611442565b92509250509295509295509295565b6000806000806000608086880312156117fb57600080fd5b6000611809888289016115dd565b955050602061181a888289016115dd565b945050604061182b888289016115dd565b935050606086013567ffffffffffffffff81111561184857600080fd5b61185488828901611442565b92509250509295509295909350565b61186c81611d9c565b82525050565b61187b81611d26565b82525050565b61188a81611d56565b82525050565b600061189c8385611d0a565b93506118a9838584611dd2565b82840190509392505050565b60006118c082611ce3565b6118ca8185611cf9565b93506118da818560208601611de1565b6118e381611e14565b840191505092915050565b60006118f982611ce3565b6119038185611d0a565b9350611913818560208601611de1565b80840191505092915050565b600061192a82611cee565b6119348185611d15565b9350611944818560208601611de1565b61194d81611e14565b840191505092915050565b6000611965602983611d15565b91507f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c796960008301527f6e672d6661696c656400000000000000000000000000000000000000000000006020830152604082019050919050565b60006119cb601d83611d15565b91507f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c65640000006000830152602082019050919050565b6000611a0b600083611d0a565b9150600082019050919050565b6000611a25602083611d15565b91507f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c65646000830152602082019050919050565b611a6181611d92565b82525050565b6000611a7382866118ee565b9150611a80828486611890565b9150819050949350505050565b6000611a98826119fe565b9150819050919050565b6000602082019050611ab76000830184611872565b92915050565b6000608082019050611ad26000830187611863565b611adf6020830186611872565b611aec6040830185611a58565b8181036060830152611afe81846118b5565b905095945050505050565b6000604082019050611b1e6000830185611872565b611b2b6020830184611a58565b9392505050565b6000606082019050611b476000830186611881565b611b546020830185611881565b611b616040830184611881565b949350505050565b60006020820190508181036000830152611b83818461191f565b905092915050565b60006020820190508181036000830152611ba481611958565b9050919050565b60006020820190508181036000830152611bc4816119be565b9050919050565b60006020820190508181036000830152611be481611a18565b9050919050565b6000602082019050611c006000830184611a58565b92915050565b6000604082019050611c1b6000830185611a58565b611c286020830184611a58565b9392505050565b6000606082019050611c446000830186611a58565b611c516020830185611a58565b611c5e6040830184611a58565b949350505050565b6000604051905081810181811067ffffffffffffffff82111715611c8957600080fd5b8060405250919050565b600067ffffffffffffffff821115611caa57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115611cd257600080fd5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611d3182611d72565b9050919050565b6000611d4382611d72565b9050919050565b60008115159050919050565b6000819050919050565b6000611d6b82611d26565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611da782611dae565b9050919050565b6000611db982611dc0565b9050919050565b6000611dcb82611d72565b9050919050565b82818337600083830152505050565b60005b83811015611dff578082015181840152602081019050611de4565b83811115611e0e576000848401525b50505050565b6000601f19601f8301169050919050565b611e2e81611d26565b8114611e3957600080fd5b50565b611e4581611d38565b8114611e5057600080fd5b50565b611e5c81611d4a565b8114611e6757600080fd5b50565b611e7381611d56565b8114611e7e57600080fd5b50565b611e8a81611d60565b8114611e9557600080fd5b50565b611ea181611d92565b8114611eac57600080fd5b5056fea365627a7a72315820d4535111e47e76ba1c1532944b21bea901b6f14e2064c60a2463ff786e419f396c6578706572696d656e74616cf564736f6c63430005100040", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"_approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalEthDebtAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dedgeExitManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"exitPositions\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"exitPositionsPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol\":\"DedgeExitManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol\":{\"keccak256\":\"0x98f7835be71453686e6bef2dae399bb08be4cfb6dfce3ead2e1d29c29df91d51\",\"urls\":[\"bzz-raw://3ffe31654a7be90ea4a7966fc387c47444bfe52cd29cfdc72bcfc84854096b70\",\"dweb:/ipfs/QmWKWZdeaTkS4LbdD9S26UHU13ki3Svq2zjMiNRwHpR4AH\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5061171b806100206000396000f3fe6080604052600436106100345760003560e01c8063642c3dfa146100365780636889dfe1146100565780637b7d722514610076575b005b34801561004257600080fd5b50610034610051366004611233565b610096565b34801561006257600080fd5b506100346100713660046112c3565b6102b6565b34801561008257600080fd5b5061003461009136600461116a565b61048c565b60405183906060906100ac9088906020016114df565b60408051601f19818403018152908290526100cd91869086906020016114b2565b60405160208183030381529060405290506000826001600160a01b0316633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561011957600080fd5b505afa15801561012d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610151919081019061114c565b6001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561018957600080fd5b505afa15801561019d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101c1919081019061114c565b90506101cd87826105b1565b806001600160a01b0316635cffe9de88856001600160a01b03166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561021657600080fd5b505afa15801561022a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061024e919081019061114c565b8c866040518563ffffffff1660e01b815260040161026f94939291906114ed565b600060405180830381600087803b15801561028957600080fd5b505af115801561029d573d6000803e3d6000fd5b505050506102ab878261077f565b505050505050505050565b6102be610ec2565b6102ca828401846111fe565b90506000816020015190506000816001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561031057600080fd5b505afa158015610324573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610348919081019061114c565b905060005b8360400151518110156103a35761039b828560400151838151811061036e57fe5b6020026020010151600001518660400151848151811061038a57fe5b60200260200101516020015161084f565b60010161034d565b506000805b846060015151811015610402576103f683866060015183815181106103c957fe5b602002602001015160000151876060015184815181106103e557fe5b602002602001015160200151610904565b909101906001016103a8565b5083516001600160a01b0316610430886104248b81868f63ffffffff6109bb16565b9063ffffffff6109bb16565b60405161043c906114d4565b60006040518083038185875af1925050503d8060008114610479576040519150601f19603f3d011682016040523d82523d6000602084013e61047e565b606091505b505050505050505050505050565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c757600080fd5b505afa1580156104db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104ff919081019061114c565b60405163095ea7b360e01b81529091506001600160a01b0382169063095ea7b3906105309086908690600401611531565b602060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061058291908101906111a4565b15156001146105ac5760405162461bcd60e51b81526004016105a3906115a5565b60405180910390fd5b505050565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ec57600080fd5b505afa158015610600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061062491908101906111e0565b9050806001600160a01b031663f0217ce58360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561068157600080fd5b505afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b991908101906111c2565b846001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f257600080fd5b505afa158015610706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061072a91908101906111c2565b6040518463ffffffff1660e01b81526004016107489392919061154c565b600060405180830381600087803b15801561076257600080fd5b505af1158015610776573d6000803e3d6000fd5b50505050505050565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107ba57600080fd5b505afa1580156107ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107f291908101906111e0565b9050806001600160a01b03166379d88d878360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561068157600080fd5b826001600160a01b0316826001600160a01b0316146108f9576000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108db919081019061114c565b905060006108e98284610a06565b90506108f58282610a8c565b5050505b6105ac838383610a9a565b60006109108383610bb2565b836001600160a01b0316836001600160a01b031614156109315750806109b4565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561096c57600080fd5b505afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a4919081019061114c565b90506109b08184610c53565b9150505b9392505050565b60006109fd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c61565b90505b92915050565b6000610a1183610c8d565b6001600160a01b03166359e94862836040518263ffffffff1660e01b8152600401610a3c91906115b5565b60206040518083038186803b158015610a5457600080fd5b505afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109fd91908101906111c2565b60006109fd83836001610d17565b826001600160a01b0316826001600160a01b03161415610b0d57816001600160a01b0316634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610aef57600080fd5b505af1158015610b03573d6000803e3d6000fd5b50505050506105ac565b610b17828261048c565b60405163073a938160e11b81526001600160a01b03831690630e75270290610b439084906004016115b5565b602060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b9591908101906111c2565b156105ac5760405162461bcd60e51b81526004016105a390611595565b60405163852a12e360e01b81526000906001600160a01b0384169063852a12e390610be19085906004016115b5565b602060405180830381600087803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c3391908101906111c2565b905080156105ac5760405162461bcd60e51b81526004016105a390611585565b60006109fd83836001610dad565b60008184841115610c855760405162461bcd60e51b81526004016105a39190611574565b505050900390565b6040516303795fb160e11b815260009073c0a47dfe034b400b47bdad5fecda2621de6c4d95906306f2bf6290610cc79085906004016114df565b60206040518083038186803b158015610cdf57600080fd5b505afa158015610cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a00919081019061114c565b6000610d2284610c8d565b6001600160a01b031663f39b5b9b848442603c016040518463ffffffff1660e01b8152600401610d539291906115c3565b6020604051808303818588803b158015610d6c57600080fd5b505af1158015610d80573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250610da591908101906111c2565b949350505050565b600080610db985610c8d565b60405163095ea7b360e01b81529091506001600160a01b0386169063095ea7b390610dea9084908890600401611531565b602060405180830381600087803b158015610e0457600080fd5b505af1158015610e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e3c91908101906111a4565b506040516395e3c50b60e01b81526001600160a01b038216906395e3c50b90610e709087908790603c42019060040161154c565b602060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109b091908101906111c2565b604080516080810182526000808252602082015260609181018290528181019190915290565b8035610a00816116a6565b8051610a00816116a6565b600082601f830112610f0f57600080fd5b8135610f22610f1d826115f8565b6115d1565b91508181835260208401935060208101905083856040840282011115610f4757600080fd5b60005b83811015610f755781610f5d888261105b565b84525060209092019160409190910190600101610f4a565b5050505092915050565b600082601f830112610f9057600080fd5b8135610f9e610f1d826115f8565b91508181835260208401935060208101905083856040840282011115610fc357600080fd5b60005b83811015610f755781610fd9888261105b565b84525060209092019160409190910190600101610fc6565b8051610a00816116bd565b8051610a00816116c6565b60008083601f84011261101957600080fd5b50813567ffffffffffffffff81111561103157600080fd5b60208301915083600182028301111561104957600080fd5b9250929050565b8051610a00816116cf565b60006040828403121561106d57600080fd5b61107760406115d1565b905060006110858484610ee8565b825250602061109684848301611141565b60208301525092915050565b6000608082840312156110b457600080fd5b6110be60806115d1565b905060006110cc8484610ee8565b82525060206110dd84848301610ee8565b602083015250604082013567ffffffffffffffff8111156110fd57600080fd5b61110984828501610f7f565b604083015250606082013567ffffffffffffffff81111561112957600080fd5b61113584828501610efe565b60608301525092915050565b8035610a00816116c6565b60006020828403121561115e57600080fd5b6000610da58484610ef3565b6000806040838503121561117d57600080fd5b60006111898585610ee8565b925050602061119a85828601611141565b9150509250929050565b6000602082840312156111b657600080fd5b6000610da58484610ff1565b6000602082840312156111d457600080fd5b6000610da58484610ffc565b6000602082840312156111f257600080fd5b6000610da58484611050565b60006020828403121561121057600080fd5b813567ffffffffffffffff81111561122757600080fd5b610da5848285016110a2565b60008060008060008060a0878903121561124c57600080fd5b60006112588989611141565b965050602061126989828a01610ee8565b955050604061127a89828a01610ee8565b945050606061128b89828a01610ee8565b935050608087013567ffffffffffffffff8111156112a857600080fd5b6112b489828a01611007565b92509250509295509295509295565b6000806000806000608086880312156112db57600080fd5b60006112e78888611141565b95505060206112f888828901611141565b945050604061130988828901611141565b935050606086013567ffffffffffffffff81111561132657600080fd5b61133288828901611007565b92509250509295509295909350565b61134a81611655565b82525050565b61134a8161162b565b61134a8161163b565b600061136e8385611626565b935061137b838584611660565b50500190565b600061138c82611619565b611396818561161d565b93506113a681856020860161166c565b6113af8161169c565b9093019392505050565b60006113c482611619565b6113ce8185611626565b93506113de81856020860161166c565b9290920192915050565b60006113f560298361161d565b7f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79698152681b99cb59985a5b195960ba1b602082015260400192915050565b6000611440601d8361161d565b7f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c6564000000815260200192915050565b6000610a00600083611626565b600061148660208361161d565b7f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c6564815260200192915050565b60006114be82866113b9565b91506114cb828486611362565b95945050505050565b6000610a008261146c565b60208101610a008284611350565b608081016114fb8287611341565b6115086020830186611350565b6115156040830185611359565b81810360608301526115278184611381565b9695505050505050565b6040810161153f8285611350565b6109b46020830184611359565b6060810161155a8286611359565b6115676020830185611359565b610da56040830184611359565b602080825281016109fd8184611381565b60208082528101610a00816113e8565b60208082528101610a0081611433565b60208082528101610a0081611479565b60208101610a008284611359565b6040810161153f8285611359565b60405181810167ffffffffffffffff811182821017156115f057600080fd5b604052919050565b600067ffffffffffffffff82111561160f57600080fd5b5060209081020190565b5190565b90815260200190565b919050565b6000610a0082611649565b151590565b90565b6000610a008261162b565b6001600160a01b031690565b6000610a008261163e565b82818337506000910152565b60005b8381101561168757818101518382015260200161166f565b83811115611696576000848401525b50505050565b601f01601f191690565b6116af8161162b565b81146116ba57600080fd5b50565b6116af81611636565b6116af8161163b565b6116af8161163e56fea365627a7a72315820470ce374b8b00747e926b02d6dae92adb5bada691d038455d0fbbe36377d4adc6c6578706572696d656e74616cf564736f6c63430005100040", + "deployedBytecode": "0x6080604052600436106100345760003560e01c8063642c3dfa146100365780636889dfe1146100565780637b7d722514610076575b005b34801561004257600080fd5b50610034610051366004611233565b610096565b34801561006257600080fd5b506100346100713660046112c3565b6102b6565b34801561008257600080fd5b5061003461009136600461116a565b61048c565b60405183906060906100ac9088906020016114df565b60408051601f19818403018152908290526100cd91869086906020016114b2565b60405160208183030381529060405290506000826001600160a01b0316633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561011957600080fd5b505afa15801561012d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610151919081019061114c565b6001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561018957600080fd5b505afa15801561019d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101c1919081019061114c565b90506101cd87826105b1565b806001600160a01b0316635cffe9de88856001600160a01b03166356cc94a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561021657600080fd5b505afa15801561022a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061024e919081019061114c565b8c866040518563ffffffff1660e01b815260040161026f94939291906114ed565b600060405180830381600087803b15801561028957600080fd5b505af115801561029d573d6000803e3d6000fd5b505050506102ab878261077f565b505050505050505050565b6102be610ec2565b6102ca828401846111fe565b90506000816020015190506000816001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561031057600080fd5b505afa158015610324573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610348919081019061114c565b905060005b8360400151518110156103a35761039b828560400151838151811061036e57fe5b6020026020010151600001518660400151848151811061038a57fe5b60200260200101516020015161084f565b60010161034d565b506000805b846060015151811015610402576103f683866060015183815181106103c957fe5b602002602001015160000151876060015184815181106103e557fe5b602002602001015160200151610904565b909101906001016103a8565b5083516001600160a01b0316610430886104248b81868f63ffffffff6109bb16565b9063ffffffff6109bb16565b60405161043c906114d4565b60006040518083038185875af1925050503d8060008114610479576040519150601f19603f3d011682016040523d82523d6000602084013e61047e565b606091505b505050505050505050505050565b6000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c757600080fd5b505afa1580156104db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104ff919081019061114c565b60405163095ea7b360e01b81529091506001600160a01b0382169063095ea7b3906105309086908690600401611531565b602060405180830381600087803b15801561054a57600080fd5b505af115801561055e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061058291908101906111a4565b15156001146105ac5760405162461bcd60e51b81526004016105a3906115a5565b60405180910390fd5b505050565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ec57600080fd5b505afa158015610600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061062491908101906111e0565b9050806001600160a01b031663f0217ce58360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561068157600080fd5b505afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b991908101906111c2565b846001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f257600080fd5b505afa158015610706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061072a91908101906111c2565b6040518463ffffffff1660e01b81526004016107489392919061154c565b600060405180830381600087803b15801561076257600080fd5b505af1158015610776573d6000803e3d6000fd5b50505050505050565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107ba57600080fd5b505afa1580156107ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107f291908101906111e0565b9050806001600160a01b03166379d88d878360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561068157600080fd5b826001600160a01b0316826001600160a01b0316146108f9576000826001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108db919081019061114c565b905060006108e98284610a06565b90506108f58282610a8c565b5050505b6105ac838383610a9a565b60006109108383610bb2565b836001600160a01b0316836001600160a01b031614156109315750806109b4565b6000836001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b15801561096c57600080fd5b505afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a4919081019061114c565b90506109b08184610c53565b9150505b9392505050565b60006109fd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c61565b90505b92915050565b6000610a1183610c8d565b6001600160a01b03166359e94862836040518263ffffffff1660e01b8152600401610a3c91906115b5565b60206040518083038186803b158015610a5457600080fd5b505afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109fd91908101906111c2565b60006109fd83836001610d17565b826001600160a01b0316826001600160a01b03161415610b0d57816001600160a01b0316634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610aef57600080fd5b505af1158015610b03573d6000803e3d6000fd5b50505050506105ac565b610b17828261048c565b60405163073a938160e11b81526001600160a01b03831690630e75270290610b439084906004016115b5565b602060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b9591908101906111c2565b156105ac5760405162461bcd60e51b81526004016105a390611595565b60405163852a12e360e01b81526000906001600160a01b0384169063852a12e390610be19085906004016115b5565b602060405180830381600087803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c3391908101906111c2565b905080156105ac5760405162461bcd60e51b81526004016105a390611585565b60006109fd83836001610dad565b60008184841115610c855760405162461bcd60e51b81526004016105a39190611574565b505050900390565b6040516303795fb160e11b815260009073c0a47dfe034b400b47bdad5fecda2621de6c4d95906306f2bf6290610cc79085906004016114df565b60206040518083038186803b158015610cdf57600080fd5b505afa158015610cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a00919081019061114c565b6000610d2284610c8d565b6001600160a01b031663f39b5b9b848442603c016040518463ffffffff1660e01b8152600401610d539291906115c3565b6020604051808303818588803b158015610d6c57600080fd5b505af1158015610d80573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250610da591908101906111c2565b949350505050565b600080610db985610c8d565b60405163095ea7b360e01b81529091506001600160a01b0386169063095ea7b390610dea9084908890600401611531565b602060405180830381600087803b158015610e0457600080fd5b505af1158015610e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e3c91908101906111a4565b506040516395e3c50b60e01b81526001600160a01b038216906395e3c50b90610e709087908790603c42019060040161154c565b602060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109b091908101906111c2565b604080516080810182526000808252602082015260609181018290528181019190915290565b8035610a00816116a6565b8051610a00816116a6565b600082601f830112610f0f57600080fd5b8135610f22610f1d826115f8565b6115d1565b91508181835260208401935060208101905083856040840282011115610f4757600080fd5b60005b83811015610f755781610f5d888261105b565b84525060209092019160409190910190600101610f4a565b5050505092915050565b600082601f830112610f9057600080fd5b8135610f9e610f1d826115f8565b91508181835260208401935060208101905083856040840282011115610fc357600080fd5b60005b83811015610f755781610fd9888261105b565b84525060209092019160409190910190600101610fc6565b8051610a00816116bd565b8051610a00816116c6565b60008083601f84011261101957600080fd5b50813567ffffffffffffffff81111561103157600080fd5b60208301915083600182028301111561104957600080fd5b9250929050565b8051610a00816116cf565b60006040828403121561106d57600080fd5b61107760406115d1565b905060006110858484610ee8565b825250602061109684848301611141565b60208301525092915050565b6000608082840312156110b457600080fd5b6110be60806115d1565b905060006110cc8484610ee8565b82525060206110dd84848301610ee8565b602083015250604082013567ffffffffffffffff8111156110fd57600080fd5b61110984828501610f7f565b604083015250606082013567ffffffffffffffff81111561112957600080fd5b61113584828501610efe565b60608301525092915050565b8035610a00816116c6565b60006020828403121561115e57600080fd5b6000610da58484610ef3565b6000806040838503121561117d57600080fd5b60006111898585610ee8565b925050602061119a85828601611141565b9150509250929050565b6000602082840312156111b657600080fd5b6000610da58484610ff1565b6000602082840312156111d457600080fd5b6000610da58484610ffc565b6000602082840312156111f257600080fd5b6000610da58484611050565b60006020828403121561121057600080fd5b813567ffffffffffffffff81111561122757600080fd5b610da5848285016110a2565b60008060008060008060a0878903121561124c57600080fd5b60006112588989611141565b965050602061126989828a01610ee8565b955050604061127a89828a01610ee8565b945050606061128b89828a01610ee8565b935050608087013567ffffffffffffffff8111156112a857600080fd5b6112b489828a01611007565b92509250509295509295509295565b6000806000806000608086880312156112db57600080fd5b60006112e78888611141565b95505060206112f888828901611141565b945050604061130988828901611141565b935050606086013567ffffffffffffffff81111561132657600080fd5b61133288828901611007565b92509250509295509295909350565b61134a81611655565b82525050565b61134a8161162b565b61134a8161163b565b600061136e8385611626565b935061137b838584611660565b50500190565b600061138c82611619565b611396818561161d565b93506113a681856020860161166c565b6113af8161169c565b9093019392505050565b60006113c482611619565b6113ce8185611626565b93506113de81856020860161166c565b9290920192915050565b60006113f560298361161d565b7f636d706e642d6d67722d63746f6b656e2d72656465656d2d756e6465726c79698152681b99cb59985a5b195960ba1b602082015260400192915050565b6000611440601d8361161d565b7f636d706e642d6d67722d63746f6b656e2d72657061792d6661696c6564000000815260200192915050565b6000610a00600083611626565b600061148660208361161d565b7f636d706e642d6d67722d63746f6b656e2d617070726f7665642d6661696c6564815260200192915050565b60006114be82866113b9565b91506114cb828486611362565b95945050505050565b6000610a008261146c565b60208101610a008284611350565b608081016114fb8287611341565b6115086020830186611350565b6115156040830185611359565b81810360608301526115278184611381565b9695505050505050565b6040810161153f8285611350565b6109b46020830184611359565b6060810161155a8286611359565b6115676020830185611359565b610da56040830184611359565b602080825281016109fd8184611381565b60208082528101610a00816113e8565b60208082528101610a0081611433565b60208082528101610a0081611479565b60208101610a008284611359565b6040810161153f8285611359565b60405181810167ffffffffffffffff811182821017156115f057600080fd5b604052919050565b600067ffffffffffffffff82111561160f57600080fd5b5060209081020190565b5190565b90815260200190565b919050565b6000610a0082611649565b151590565b90565b6000610a008261162b565b6001600160a01b031690565b6000610a008261163e565b82818337506000910152565b60005b8381101561168757818101518382015260200161166f565b83811115611696576000848401525b50505050565b601f01601f191690565b6116af8161162b565b81146116ba57600080fd5b50565b6116af81611636565b6116af8161163b565b6116af8161163e56fea365627a7a72315820470ce374b8b00747e926b02d6dae92adb5bada691d038455d0fbbe36377d4adc6c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "690:6189:26:-;;;810:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;810:23:26;690:6189;;;;;;", - "deployedSourceMap": "690:6189:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5563:1314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5563:1314:26;;;;;;;;;;;;;;;;:::i;:::-;;4250:1307;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4250:1307:26;;;;;;;;;;;;;;;;:::i;:::-;;1825:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1825:321:26;;;;;;;;;;;;;;;;:::i;:::-;;5563:1314;5824:31;5887:22;5824:95;;5984:53;6094:23;6083:35;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6083:35:26;;;6132:30;;6040:132;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6040:132:26;;;5984:188;;6183:24;6283:15;:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6283:55:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6283:55:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6283:55:26;;;;;;;;;6236:148;;;:150;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6236:150:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6236:150:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6236:150:26;;;;;;;;;6183:213;;6452:56;6470:15;6495:11;6452:17;:56::i;:::-;6566:11;:21;;;6601:15;6630;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6630:32:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6630:32:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6630:32:26;;;;;;;;;6676:18;6708:40;6566:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6566:192:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6566:192:26;;;;6814:56;6832:15;6857:11;6814:17;:56::i;:::-;5563:1314;;;;;;;;;:::o;4250:1307::-;4451:38;;:::i;:::-;4516:7;;4492:77;;;;;;;;;4451:118;;4580:31;4643:10;:33;;;4580:106;;4696:21;4720:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4720:31:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4720:31:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4720:31:26;;;;;;;;;4696:55;;4813:9;4825:1;4813:13;;4808:237;4832:10;:21;;;:28;4828:1;:32;4808:237;;;4881:153;4909:13;4940:10;:21;;;4962:1;4940:24;;;;;;;;;;;;;;:31;;;4989:10;:21;;;5011:1;4989:24;;;;;;;;;;;;;;:31;;;4881:10;:153::i;:::-;4862:3;;;;;;;4808:237;;;;5055:22;5092:9;5104:1;5092:13;;5087:282;5111:10;:27;;;:34;5107:1;:38;5087:282;;;5184:174;5221:13;5252:10;:27;;;5280:1;5252:30;;;;;;;;;;;;;;:37;;;5307:10;:27;;;5335:1;5307:30;;;;;;;;;;;;;;:37;;;5184:19;:174::i;:::-;5166:192;;;;5147:3;;;;;;;5087:282;;;;5430:10;:26;;;:31;;5481:55;5523:12;5481:37;5513:4;5481:27;5500:7;5481:14;:18;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;:41;;:55;;;;:::i;:::-;5430:120;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;5430:120:26;;4250:1307;;;;;;;;;:::o;1825:321::-;1951:18;1980:6;1972:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1972:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1972:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1972:28:26;;;;;;;;;1951:49;;2077:4;2031:50;;2038:10;2031:26;;;2058:6;2066;2031:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:42:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2031:42:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2031:42:26;;;;;;;;;:50;;;2010:129;;;;;;;;;;;;;;;;;;;;;;1825:321;;;:::o;1203:305::-;1304:9;1333:12;1324:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1324:34:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1324:34:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1324:34:26;;;;;;;;;1304:55;;1378:1;1370:17;;;1425:3;1409:21;;1401:30;;;1453:1;1445:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1445:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1445:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1445:16:26;;;;;;;;;1483:1;1475:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1475:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1475:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1475:16:26;;;;;;;;;1370:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1370:131:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1370:131:26;;;;1203:305;;;:::o;1514:::-;1615:9;1644:12;1635:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1635:34:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1635:34:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1635:34:26;;;;;;;;;1615:55;;1689:1;1681:17;;;1736:3;1720:21;;1712:30;;;1764:1;1756:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1756:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1756:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1756:16:26;;;;;;;;;1794:1;1786:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1786:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1786:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1786:16:26;;;;;;;;;1681:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1681:131:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1681:131:26;;;;1514:305;;;:::o;3307:530::-;3485:13;3475:23;;:6;:23;;;3471:306;;3514:18;3543:6;3535:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3535:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3535:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3535:28:26;;;;;;;;;3514:49;;3621:17;3641:40;3662:10;3674:6;3641:20;:40::i;:::-;3621:60;;3732:34;3744:10;3756:9;3732:11;:34::i;:::-;;3471:306;;;3787:43;3800:13;3815:6;3823;3787:12;:43::i;:::-;3307:530;;;:::o;3843:401::-;3975:7;4019:33;4037:6;4045;4019:17;:33::i;:::-;4077:13;4067:23;;:6;:23;;;4063:67;;;4113:6;4106:13;;;;4063:67;4140:18;4169:6;4161:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4161:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4161:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4161:28:26;;;;;;;;;4140:49;;4206:31;4218:10;4230:6;4206:11;:31::i;:::-;4199:38;;;3843:401;;;;;;:::o;1274:134:32:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;2525:212:24:-;2618:4;2658:33;2678:12;2658:19;:33::i;:::-;2641:76;;;2718:11;2641:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2641:89:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2641:89:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2641:89:24;;;;;;;;;2634:96;;2525:212;;;;:::o;514:160::-;599:4;622:45;634:12;648:9;664:1;622:11;:45::i;:::-;615:52;;514:160;;;;:::o;2637:408:26:-;2759:13;2749:23;;:6;:23;;;2745:294;;;2796:6;2788:27;;;2822:6;2788:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2788:43:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2788:43:26;;;;;2745:294;;;2862:24;2871:6;2879;2862:8;:24::i;:::-;2964:1;2933:6;2925:27;;;2953:6;2925:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2925:35:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2925:35:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2925:35:26;;;;;;;;;:40;2900:128;;;;;;;;;;;;;;;;;;;;;;2745:294;2637:408;;;:::o;3051:250::-;3135:6;3152;3144:32;;;3177:12;3144:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3144:46:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3144:46:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3144:46:26;;;;;;;;;3135:55;;3226:1;3221;:6;3200:94;;;;;;;;;;;;;;;;;;;;;;3051:250;;;:::o;955:156:24:-;1034:4;1057:47;1069:12;1083:11;1101:1;1057:11;:47::i;:::-;1050:54;;955:156;;;;:::o;1732:187:32:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;337:171:24:-;411:7;288:42;437:50;;;488:12;437:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;437:64:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;437:64:24;;;;;;;;;430:71;;337:171;;;:::o;680:269::-;786:4;826:33;846:12;826:19;:33::i;:::-;809:84;;;900:9;911:14;938:2;932:3;:8;809:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;809:133:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;809:133:24;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;809:133:24;;;;;;;;;802:140;;680:269;;;;;:::o;1117:355::-;1215:4;1231:16;1250:33;1270:12;1250:19;:33::i;:::-;1231:52;;1301:12;1294:28;;;1323:8;1333:11;1294:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1294:51:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1294:51:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1294:51:24;;;;;;;;;;1380:8;1363:59;;;1423:11;1436:12;1461:2;1455:3;:8;1363:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1363:102:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1363:102:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1363:102:24;;;;;;;;;1356:109;;;1117:355;;;;;:::o;690:6189:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:146;;371:6;358:20;349:29;;383:41;418:5;383:41;;;343:86;;;;;487:789;;630:3;623:4;615:6;611:17;607:27;597:2;;648:1;645;638:12;597:2;685:6;672:20;707:106;722:90;805:6;722:90;;;707:106;;;698:115;;830:5;855:6;848:5;841:21;885:4;877:6;873:17;863:27;;907:4;902:3;898:14;891:21;;960:6;1007:3;999:4;991:6;987:17;982:3;978:27;975:36;972:2;;;1024:1;1021;1014:12;972:2;1049:1;1034:236;1059:6;1056:1;1053:13;1034:236;;;1117:3;1139:67;1202:3;1190:10;1139:67;;;1134:3;1127:80;1230:4;1225:3;1221:14;1214:21;;1258:4;1253:3;1249:14;1242:21;;1091:179;1081:1;1078;1074:9;1069:14;;1034:236;;;1038:14;590:686;;;;;;;;1329:771;;1466:3;1459:4;1451:6;1447:17;1443:27;1433:2;;1484:1;1481;1474:12;1433:2;1521:6;1508:20;1543:100;1558:84;1635:6;1558:84;;;1543:100;;;1534:109;;1660:5;1685:6;1678:5;1671:21;1715:4;1707:6;1703:17;1693:27;;1737:4;1732:3;1728:14;1721:21;;1790:6;1837:3;1829:4;1821:6;1817:17;1812:3;1808:27;1805:36;1802:2;;;1854:1;1851;1844:12;1802:2;1879:1;1864:230;1889:6;1886:1;1883:13;1864:230;;;1947:3;1969:61;2026:3;2014:10;1969:61;;;1964:3;1957:74;2054:4;2049:3;2045:14;2038:21;;2082:4;2077:3;2073:14;2066:21;;1921:173;1911:1;1908;1904:9;1899:14;;1864:230;;;1868:14;1426:674;;;;;;;;2108:128;;2189:6;2183:13;2174:22;;2201:30;2225:5;2201:30;;;2168:68;;;;;2243:134;;2327:6;2321:13;2312:22;;2339:33;2366:5;2339:33;;;2306:71;;;;;2398:336;;;2512:3;2505:4;2497:6;2493:17;2489:27;2479:2;;2530:1;2527;2520:12;2479:2;2563:6;2550:20;2540:30;;2590:18;2582:6;2579:30;2576:2;;;2622:1;2619;2612:12;2576:2;2656:4;2648:6;2644:17;2632:29;;2707:3;2699:4;2691:6;2687:17;2677:8;2673:32;2670:41;2667:2;;;2724:1;2721;2714:12;2667:2;2472:262;;;;;;2742:174;;2846:6;2840:13;2831:22;;2858:53;2905:5;2858:53;;;2825:91;;;;;2970:476;;3089:4;3077:9;3072:3;3068:19;3064:30;3061:2;;;3107:1;3104;3097:12;3061:2;3125:20;3140:4;3125:20;;;3116:29;;3197:1;3229:49;3274:3;3265:6;3254:9;3250:22;3229:49;;;3222:4;3215:5;3211:16;3204:75;3155:135;3342:2;3375:49;3420:3;3411:6;3400:9;3396:22;3375:49;;;3368:4;3361:5;3357:16;3350:75;3300:136;3055:391;;;;;3494:470;;3607:4;3595:9;3590:3;3586:19;3582:30;3579:2;;;3625:1;3622;3615:12;3579:2;3643:20;3658:4;3643:20;;;3634:29;;3715:1;3747:49;3792:3;3783:6;3772:9;3768:22;3747:49;;;3740:4;3733:5;3729:16;3722:75;3673:135;3860:2;3893:49;3938:3;3929:6;3918:9;3914:22;3893:49;;;3886:4;3879:5;3875:16;3868:75;3818:136;3573:391;;;;;4022:1087;;4145:4;4133:9;4128:3;4124:19;4120:30;4117:2;;;4163:1;4160;4153:12;4117:2;4181:20;4196:4;4181:20;;;4172:29;;4262:1;4294:57;4347:3;4338:6;4327:9;4323:22;4294:57;;;4287:4;4280:5;4276:16;4269:83;4211:152;4431:2;4464:49;4509:3;4500:6;4489:9;4485:22;4464:49;;;4457:4;4450:5;4446:16;4439:75;4373:152;4609:2;4598:9;4594:18;4581:32;4633:18;4625:6;4622:30;4619:2;;;4665:1;4662;4655:12;4619:2;4700:94;4790:3;4781:6;4770:9;4766:22;4700:94;;;4693:4;4686:5;4682:16;4675:120;4535:271;4896:2;4885:9;4881:18;4868:32;4920:18;4912:6;4909:30;4906:2;;;4952:1;4949;4942:12;4906:2;4987:100;5083:3;5074:6;5063:9;5059:22;4987:100;;;4980:4;4973:5;4969:16;4962:126;4816:283;4111:998;;;;;5116:130;;5196:6;5183:20;5174:29;;5208:33;5235:5;5208:33;;;5168:78;;;;;5253:134;;5337:6;5331:13;5322:22;;5349:33;5376:5;5349:33;;;5316:71;;;;;5394:263;;5509:2;5497:9;5488:7;5484:23;5480:32;5477:2;;;5525:1;5522;5515:12;5477:2;5560:1;5577:64;5633:7;5624:6;5613:9;5609:22;5577:64;;;5567:74;;5539:108;5471:186;;;;;5664:366;;;5785:2;5773:9;5764:7;5760:23;5756:32;5753:2;;;5801:1;5798;5791:12;5753:2;5836:1;5853:53;5898:7;5889:6;5878:9;5874:22;5853:53;;;5843:63;;5815:97;5943:2;5961:53;6006:7;5997:6;5986:9;5982:22;5961:53;;;5951:63;;5922:98;5747:283;;;;;;6037:257;;6149:2;6137:9;6128:7;6124:23;6120:32;6117:2;;;6165:1;6162;6155:12;6117:2;6200:1;6217:61;6270:7;6261:6;6250:9;6246:22;6217:61;;;6207:71;;6179:105;6111:183;;;;;6301:263;;6416:2;6404:9;6395:7;6391:23;6387:32;6384:2;;;6432:1;6429;6422:12;6384:2;6467:1;6484:64;6540:7;6531:6;6520:9;6516:22;6484:64;;;6474:74;;6446:108;6378:186;;;;;6571:303;;6706:2;6694:9;6685:7;6681:23;6677:32;6674:2;;;6722:1;6719;6712:12;6674:2;6757:1;6774:84;6850:7;6841:6;6830:9;6826:22;6774:84;;;6764:94;;6736:128;6668:206;;;;;6881:395;;7019:2;7007:9;6998:7;6994:23;6990:32;6987:2;;;7035:1;7032;7025:12;6987:2;7098:1;7087:9;7083:17;7070:31;7121:18;7113:6;7110:30;7107:2;;;7153:1;7150;7143:12;7107:2;7173:87;7252:7;7243:6;7232:9;7228:22;7173:87;;;7163:97;;7049:217;6981:295;;;;;7283:263;;7398:2;7386:9;7377:7;7373:23;7369:32;7366:2;;;7414:1;7411;7404:12;7366:2;7449:1;7466:64;7522:7;7513:6;7502:9;7498:22;7466:64;;;7456:74;;7428:108;7360:186;;;;;7553:883;;;;;;;7752:3;7740:9;7731:7;7727:23;7723:33;7720:2;;;7769:1;7766;7759:12;7720:2;7804:1;7821:53;7866:7;7857:6;7846:9;7842:22;7821:53;;;7811:63;;7783:97;7911:2;7929:53;7974:7;7965:6;7954:9;7950:22;7929:53;;;7919:63;;7890:98;8019:2;8037:61;8090:7;8081:6;8070:9;8066:22;8037:61;;;8027:71;;7998:106;8135:2;8153:53;8198:7;8189:6;8178:9;8174:22;8153:53;;;8143:63;;8114:98;8271:3;8260:9;8256:19;8243:33;8296:18;8288:6;8285:30;8282:2;;;8328:1;8325;8318:12;8282:2;8356:64;8412:7;8403:6;8392:9;8388:22;8356:64;;;8346:74;;;;8222:204;7714:722;;;;;;;;;8443:741;;;;;;8617:3;8605:9;8596:7;8592:23;8588:33;8585:2;;;8634:1;8631;8624:12;8585:2;8669:1;8686:53;8731:7;8722:6;8711:9;8707:22;8686:53;;;8676:63;;8648:97;8776:2;8794:53;8839:7;8830:6;8819:9;8815:22;8794:53;;;8784:63;;8755:98;8884:2;8902:53;8947:7;8938:6;8927:9;8923:22;8902:53;;;8892:63;;8863:98;9020:2;9009:9;9005:18;8992:32;9044:18;9036:6;9033:30;9030:2;;;9076:1;9073;9066:12;9030:2;9104:64;9160:7;9151:6;9140:9;9136:22;9104:64;;;9094:74;;;;8971:203;8579:605;;;;;;;;;9191:142;9282:45;9321:5;9282:45;;;9277:3;9270:58;9264:69;;;9340:113;9423:24;9441:5;9423:24;;;9418:3;9411:37;9405:48;;;9460:113;9543:24;9561:5;9543:24;;;9538:3;9531:37;9525:48;;;9603:310;;9735:88;9816:6;9811:3;9735:88;;;9728:95;;9835:43;9871:6;9866:3;9859:5;9835:43;;;9900:6;9895:3;9891:16;9884:23;;9721:192;;;;;;9921:343;;10031:38;10063:5;10031:38;;;10081:70;10144:6;10139:3;10081:70;;;10074:77;;10156:52;10201:6;10196:3;10189:4;10182:5;10178:16;10156:52;;;10229:29;10251:6;10229:29;;;10224:3;10220:39;10213:46;;10011:253;;;;;;10271:356;;10399:38;10431:5;10399:38;;;10449:88;10530:6;10525:3;10449:88;;;10442:95;;10542:52;10587:6;10582:3;10575:4;10568:5;10564:16;10542:52;;;10615:6;10610:3;10606:16;10599:23;;10379:248;;;;;;10634:347;;10746:39;10779:5;10746:39;;;10797:71;10861:6;10856:3;10797:71;;;10790:78;;10873:52;10918:6;10913:3;10906:4;10899:5;10895:16;10873:52;;;10946:29;10968:6;10946:29;;;10941:3;10937:39;10930:46;;10726:255;;;;;;10989:378;;11149:67;11213:2;11208:3;11149:67;;;11142:74;;11249:34;11245:1;11240:3;11236:11;11229:55;11318:11;11313:2;11308:3;11304:12;11297:33;11358:2;11353:3;11349:12;11342:19;;11135:232;;;;11376:329;;11536:67;11600:2;11595:3;11536:67;;;11529:74;;11636:31;11632:1;11627:3;11623:11;11616:52;11696:2;11691:3;11687:12;11680:19;;11522:183;;;;11714:296;;11891:83;11972:1;11967:3;11891:83;;;11884:90;;12002:1;11997:3;11993:11;11986:18;;11877:133;;;;12019:332;;12179:67;12243:2;12238:3;12179:67;;;12172:74;;12279:34;12275:1;12270:3;12266:11;12259:55;12342:2;12337:3;12333:12;12326:19;;12165:186;;;;12359:113;12442:24;12460:5;12442:24;;;12437:3;12430:37;12424:48;;;12479:439;;12679:93;12768:3;12759:6;12679:93;;;12672:100;;12790:103;12889:3;12880:6;12872;12790:103;;;12783:110;;12910:3;12903:10;;12660:258;;;;;;;12925:370;;13123:147;13266:3;13123:147;;;13116:154;;13287:3;13280:10;;13104:191;;;;13302:213;;13420:2;13409:9;13405:18;13397:26;;13434:71;13502:1;13491:9;13487:17;13478:6;13434:71;;;13391:124;;;;;13522:647;;13750:3;13739:9;13735:19;13727:27;;13765:79;13841:1;13830:9;13826:17;13817:6;13765:79;;;13855:72;13923:2;13912:9;13908:18;13899:6;13855:72;;;13938;14006:2;13995:9;13991:18;13982:6;13938:72;;;14058:9;14052:4;14048:20;14043:2;14032:9;14028:18;14021:48;14083:76;14154:4;14145:6;14083:76;;;14075:84;;13721:448;;;;;;;;14176:324;;14322:2;14311:9;14307:18;14299:26;;14336:71;14404:1;14393:9;14389:17;14380:6;14336:71;;;14418:72;14486:2;14475:9;14471:18;14462:6;14418:72;;;14293:207;;;;;;14507:435;;14681:2;14670:9;14666:18;14658:26;;14695:71;14763:1;14752:9;14748:17;14739:6;14695:71;;;14777:72;14845:2;14834:9;14830:18;14821:6;14777:72;;;14860;14928:2;14917:9;14913:18;14904:6;14860:72;;;14652:290;;;;;;;14949:301;;15087:2;15076:9;15072:18;15064:26;;15137:9;15131:4;15127:20;15123:1;15112:9;15108:17;15101:47;15162:78;15235:4;15226:6;15162:78;;;15154:86;;15058:192;;;;;15257:407;;15448:2;15437:9;15433:18;15425:26;;15498:9;15492:4;15488:20;15484:1;15473:9;15469:17;15462:47;15523:131;15649:4;15523:131;;;15515:139;;15419:245;;;;15671:407;;15862:2;15851:9;15847:18;15839:26;;15912:9;15906:4;15902:20;15898:1;15887:9;15883:17;15876:47;15937:131;16063:4;15937:131;;;15929:139;;15833:245;;;;16085:407;;16276:2;16265:9;16261:18;16253:26;;16326:9;16320:4;16316:20;16312:1;16301:9;16297:17;16290:47;16351:131;16477:4;16351:131;;;16343:139;;16247:245;;;;16499:213;;16617:2;16606:9;16602:18;16594:26;;16631:71;16699:1;16688:9;16684:17;16675:6;16631:71;;;16588:124;;;;;16719:324;;16865:2;16854:9;16850:18;16842:26;;16879:71;16947:1;16936:9;16932:17;16923:6;16879:71;;;16961:72;17029:2;17018:9;17014:18;17005:6;16961:72;;;16836:207;;;;;;17050:435;;17224:2;17213:9;17209:18;17201:26;;17238:71;17306:1;17295:9;17291:17;17282:6;17238:71;;;17320:72;17388:2;17377:9;17373:18;17364:6;17320:72;;;17403;17471:2;17460:9;17456:18;17447:6;17403:72;;;17195:290;;;;;;;17492:256;;17554:2;17548:9;17538:19;;17592:4;17584:6;17580:17;17691:6;17679:10;17676:22;17655:18;17643:10;17640:34;17637:62;17634:2;;;17712:1;17709;17702:12;17634:2;17732:10;17728:2;17721:22;17532:216;;;;;17755:330;;17940:18;17932:6;17929:30;17926:2;;;17972:1;17969;17962:12;17926:2;18007:4;17999:6;17995:17;17987:25;;18070:4;18064;18060:15;18052:23;;17863:222;;;;18092:324;;18271:18;18263:6;18260:30;18257:2;;;18303:1;18300;18293:12;18257:2;18338:4;18330:6;18326:17;18318:25;;18401:4;18395;18391:15;18383:23;;18194:222;;;;18423:121;;18516:5;18510:12;18500:22;;18481:63;;;;18551:122;;18645:5;18639:12;18629:22;;18610:63;;;;18681:162;;18795:6;18790:3;18783:19;18832:4;18827:3;18823:14;18808:29;;18776:67;;;;;18852:144;;18987:3;18972:18;;18965:31;;;;;19005:163;;19120:6;19115:3;19108:19;19157:4;19152:3;19148:14;19133:29;;19101:67;;;;;19176:91;;19238:24;19256:5;19238:24;;;19227:35;;19221:46;;;;19274:99;;19344:24;19362:5;19344:24;;;19333:35;;19327:46;;;;19380:85;;19453:5;19446:13;19439:21;19428:32;;19422:43;;;;19472:72;;19534:5;19523:16;;19517:27;;;;19551:111;;19633:24;19651:5;19633:24;;;19622:35;;19616:46;;;;19669:121;;19742:42;19735:5;19731:54;19720:65;;19714:76;;;;19797:72;;19859:5;19848:16;;19842:27;;;;19876:129;;19963:37;19994:5;19963:37;;;19950:50;;19944:61;;;;20012:121;;20091:37;20122:5;20091:37;;;20078:50;;20072:61;;;;20140:108;;20219:24;20237:5;20219:24;;;20206:37;;20200:48;;;;20256:145;20337:6;20332:3;20327;20314:30;20393:1;20384:6;20379:3;20375:16;20368:27;20307:94;;;;20410:268;20475:1;20482:101;20496:6;20493:1;20490:13;20482:101;;;20572:1;20567:3;20563:11;20557:18;20553:1;20548:3;20544:11;20537:39;20518:2;20515:1;20511:10;20506:15;;20482:101;;;20598:6;20595:1;20592:13;20589:2;;;20663:1;20654:6;20649:3;20645:16;20638:27;20589:2;20459:219;;;;;20686:97;;20774:2;20770:7;20765:2;20758:5;20754:14;20750:28;20740:38;;20734:49;;;;20791:117;20860:24;20878:5;20860:24;;;20853:5;20850:35;20840:2;;20899:1;20896;20889:12;20840:2;20834:74;;20915:133;20992:32;21018:5;20992:32;;;20985:5;20982:43;20972:2;;21039:1;21036;21029:12;20972:2;20966:82;;21055:111;21121:21;21136:5;21121:21;;;21114:5;21111:32;21101:2;;21157:1;21154;21147:12;21101:2;21095:71;;21173:117;21242:24;21260:5;21242:24;;;21235:5;21232:35;21222:2;;21281:1;21278;21271:12;21222:2;21216:74;;21297:157;21386:44;21424:5;21386:44;;;21379:5;21376:55;21366:2;;21445:1;21442;21435:12;21366:2;21360:94;;21461:117;21530:24;21548:5;21530:24;;;21523:5;21520:35;21510:2;;21569:1;21566;21559:12;21510:2;21504:74;", + "deployedSourceMap": "690:6189:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5563:1314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5563:1314:26;;;;;;;;:::i;4250:1307::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4250:1307:26;;;;;;;;:::i;1825:321::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1825:321:26;;;;;;;;:::i;5563:1314::-;6083:35;;5887:22;;5984:53;;6083:35;;6094:23;;6083:35;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6083:35:26;;;;6040:132;;6132:30;;;;49:4:-1;6040:132:26;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6040:132:26;;;5984:188;;6183:24;6283:15;-1:-1:-1;;;;;6283:53:26;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6283:55:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6283:55:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6283:55:26;;;;;;;;;-1:-1:-1;;;;;6236:148:26;;:150;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6236:150:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6236:150:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6236:150:26;;;;;;;;;6183:213;;6452:56;6470:15;6495:11;6452:17;:56::i;:::-;6566:11;-1:-1:-1;;;;;6566:21:26;;6601:15;6630;-1:-1:-1;;;;;6630:30:26;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6630:32:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6630:32:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6630:32:26;;;;;;;;;6676:18;6708:40;6566:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6566:192:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6566:192:26;;;;6814:56;6832:15;6857:11;6814:17;:56::i;:::-;5563:1314;;;;;;;;;:::o;4250:1307::-;4451:38;;:::i;:::-;4492:77;;;;4516:7;4492:77;;;4451:118;;4580:31;4643:10;:33;;;4580:106;;4696:21;4720:15;-1:-1:-1;;;;;4720:29:26;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4720:31:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4720:31:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4720:31:26;;;;;;;;;4696:55;-1:-1:-1;4813:9:26;4808:237;4832:10;:21;;;:28;4828:1;:32;4808:237;;;4881:153;4909:13;4940:10;:21;;;4962:1;4940:24;;;;;;;;;;;;;;:31;;;4989:10;:21;;;5011:1;4989:24;;;;;;;;;;;;;;:31;;;4881:10;:153::i;:::-;4862:3;;4808:237;;;-1:-1:-1;5055:22:26;;5087:282;5111:10;:27;;;:34;5107:1;:38;5087:282;;;5184:174;5221:13;5252:10;:27;;;5280:1;5252:30;;;;;;;;;;;;;;:37;;;5307:10;:27;;;5335:1;5307:30;;;;;;;;;;;;;;:37;;;5184:19;:174::i;:::-;5166:192;;;;5147:3;;5087:282;;;-1:-1:-1;5430:26:26;;-1:-1:-1;;;;;5430:31:26;5481:55;5523:12;5481:37;5513:4;5481:37;:14;5500:7;5481:27;:18;:27;:::i;:::-;:31;:37;:31;:37;:::i;:55::-;5430:120;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;5430:120:26;;4250:1307;;;;;;;;;:::o;1825:321::-;1951:18;1980:6;-1:-1:-1;;;;;1972:26:26;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1972:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1972:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1972:28:26;;;;;;;;;2031:42;;-1:-1:-1;;;2031:42:26;;1951:49;;-1:-1:-1;;;;;;2031:26:26;;;;;:42;;2058:6;;2066;;2031:42;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:42:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2031:42:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2031:42:26;;;;;;;;;:50;;2077:4;2031:50;2010:129;;;;-1:-1:-1;;;2010:129:26;;;;;;;;;;;;;;;;;1825:321;;;:::o;1203:305::-;1304:9;1333:12;-1:-1:-1;;;;;1324:32:26;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1324:34:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1324:34:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1324:34:26;;;;;;;;;1304:55;;1378:1;-1:-1:-1;;;;;1370:17:26;;1425:3;1409:21;;1401:30;;;1453:1;-1:-1:-1;;;;;1445:14:26;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1445:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1445:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1445:16:26;;;;;;;;;1483:1;-1:-1:-1;;;;;1475:14:26;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1475:16:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1475:16:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1475:16:26;;;;;;;;;1370:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1370:131:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1370:131:26;;;;1203:305;;;:::o;1514:::-;1615:9;1644:12;-1:-1:-1;;;;;1635:32:26;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1635:34:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1635:34:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1635:34:26;;;;;;;;;1615:55;;1689:1;-1:-1:-1;;;;;1681:17:26;;1736:3;1720:21;;1712:30;;;1764:1;-1:-1:-1;;;;;1756:14:26;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;3307:530:26;3485:13;-1:-1:-1;;;;;3475:23:26;:6;-1:-1:-1;;;;;3475:23:26;;3471:306;;3514:18;3543:6;-1:-1:-1;;;;;3535:26:26;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3535:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3535:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3535:28:26;;;;;;;;;3514:49;;3621:17;3641:40;3662:10;3674:6;3641:20;:40::i;:::-;3621:60;;3732:34;3744:10;3756:9;3732:11;:34::i;:::-;;3471:306;;;3787:43;3800:13;3815:6;3823;3787:12;:43::i;3843:401::-;3975:7;4019:33;4037:6;4045;4019:17;:33::i;:::-;4077:13;-1:-1:-1;;;;;4067:23:26;:6;-1:-1:-1;;;;;4067:23:26;;4063:67;;;-1:-1:-1;4113:6:26;4106:13;;4063:67;4140:18;4169:6;-1:-1:-1;;;;;4161:26:26;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4161:28:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4161:28:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4161:28:26;;;;;;;;;4140:49;;4206:31;4218:10;4230:6;4206:11;:31::i;:::-;4199:38;;;3843:401;;;;;;:::o;1274:134:32:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;;:::o;2525:212:24:-;2618:4;2658:33;2678:12;2658:19;:33::i;:::-;-1:-1:-1;;;;;2641:76:24;;2718:11;2641:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2641:89:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2641:89:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2641:89:24;;;;;;;;514:160;599:4;622:45;634:12;648:9;664:1;622:11;:45::i;2637:408:26:-;2759:13;-1:-1:-1;;;;;2749:23:26;:6;-1:-1:-1;;;;;2749:23:26;;2745:294;;;2796:6;-1:-1:-1;;;;;2788:27:26;;2822:6;2788:43;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2788:43:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2788:43:26;;;;;2745:294;;;2862:24;2871:6;2879;2862:8;:24::i;:::-;2925:35;;-1:-1:-1;;;2925:35:26;;-1:-1:-1;;;;;2925:27:26;;;;;:35;;2953:6;;2925:35;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2925:35:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2925:35:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2925:35:26;;;;;;;;;:40;2900:128;;;;-1:-1:-1;;;2900:128:26;;;;;;;;3051:250;3144:46;;-1:-1:-1;;;3144:46:26;;3135:6;;-1:-1:-1;;;;;3144:32:26;;;;;:46;;3177:12;;3144:46;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3144:46:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3144:46:26;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3144:46:26;;;;;;;;;3135:55;-1:-1:-1;3221:6:26;;3200:94;;;;-1:-1:-1;;;3200:94:26;;;;;;;;955:156:24;1034:4;1057:47;1069:12;1083:11;1101:1;1057:11;:47::i;1732:187:32:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:32;;;;;;;;;;-1:-1:-1;;;1888:5:32;;;1732:187::o;337:171:24:-;437:64;;-1:-1:-1;;;437:64:24;;411:7;;288:42;;437:50;;:64;;488:12;;437:64;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;437:64:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;437:64:24;;;;;;;;680:269;786:4;826:33;846:12;826:19;:33::i;:::-;-1:-1:-1;;;;;809:84:24;;900:9;911:14;932:3;938:2;932:8;809:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;809:133:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;809:133:24;;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;809:133:24;;;;;;;;;802:140;680:269;-1:-1:-1;;;;680:269:24:o;1117:355::-;1215:4;1231:16;1250:33;1270:12;1250:19;:33::i;:::-;1294:51;;-1:-1:-1;;;1294:51:24;;1231:52;;-1:-1:-1;;;;;;1294:28:24;;;;;:51;;1231:52;;1333:11;;1294:51;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1294:51:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1294:51:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1294:51:24;;;;;;;;;-1:-1:-1;1363:102:24;;-1:-1:-1;;;1363:102:24;;-1:-1:-1;;;;;1363:59:24;;;;;:102;;1423:11;;1436:12;;1461:2;1455:3;:8;;1363:102;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1363:102:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1363:102:24;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1363:102:24;;;;;;;;690:6189:26;;;;;;;;;-1:-1:-1;690:6189:26;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;487:789;;630:3;623:4;615:6;611:17;607:27;597:2;;648:1;645;638:12;597:2;685:6;672:20;707:106;722:90;805:6;722:90;;;707:106;;;698:115;;830:5;855:6;848:5;841:21;885:4;877:6;873:17;863:27;;907:4;902:3;898:14;891:21;;960:6;1007:3;999:4;991:6;987:17;982:3;978:27;975:36;972:2;;;1024:1;1021;1014:12;972:2;1049:1;1034:236;1059:6;1056:1;1053:13;1034:236;;;1117:3;1139:67;1202:3;1190:10;1139:67;;;1127:80;;-1:-1;1230:4;1221:14;;;;1258:4;1249:14;;;;;1081:1;1074:9;1034:236;;;1038:14;590:686;;;;;;;;1329:771;;1466:3;1459:4;1451:6;1447:17;1443:27;1433:2;;1484:1;1481;1474:12;1433:2;1521:6;1508:20;1543:100;1558:84;1635:6;1558:84;;1543:100;1534:109;;1660:5;1685:6;1678:5;1671:21;1715:4;1707:6;1703:17;1693:27;;1737:4;1732:3;1728:14;1721:21;;1790:6;1837:3;1829:4;1821:6;1817:17;1812:3;1808:27;1805:36;1802:2;;;1854:1;1851;1844:12;1802:2;1879:1;1864:230;1889:6;1886:1;1883:13;1864:230;;;1947:3;1969:61;2026:3;2014:10;1969:61;;;1957:74;;-1:-1;2054:4;2045:14;;;;2082:4;2073:14;;;;;1911:1;1904:9;1864:230;;2108:128;2183:13;;2201:30;2183:13;2201:30;;2243:134;2321:13;;2339:33;2321:13;2339:33;;2398:336;;;2512:3;2505:4;2497:6;2493:17;2489:27;2479:2;;2530:1;2527;2520:12;2479:2;-1:-1;2550:20;;2590:18;2579:30;;2576:2;;;2622:1;2619;2612:12;2576:2;2656:4;2648:6;2644:17;2632:29;;2707:3;2699:4;2691:6;2687:17;2677:8;2673:32;2670:41;2667:2;;;2724:1;2721;2714:12;2667:2;2472:262;;;;;;2742:174;2840:13;;2858:53;2840:13;2858:53;;2970:476;;3089:4;3077:9;3072:3;3068:19;3064:30;3061:2;;;3107:1;3104;3097:12;3061:2;3125:20;3140:4;3125:20;;;3116:29;-1:-1;3197:1;3229:49;3274:3;3254:9;3229:49;;;3204:75;;-1:-1;3342:2;3375:49;3420:3;3396:22;;;3375:49;;;3368:4;3361:5;3357:16;3350:75;3300:136;3055:391;;;;;4022:1087;;4145:4;4133:9;4128:3;4124:19;4120:30;4117:2;;;4163:1;4160;4153:12;4117:2;4181:20;4196:4;4181:20;;;4172:29;-1:-1;4262:1;4294:57;4347:3;4327:9;4294:57;;;4269:83;;-1:-1;4431:2;4464:49;4509:3;4485:22;;;4464:49;;;4457:4;4450:5;4446:16;4439:75;4373:152;4609:2;4598:9;4594:18;4581:32;4633:18;4625:6;4622:30;4619:2;;;4665:1;4662;4655:12;4619:2;4700:94;4790:3;4781:6;4770:9;4766:22;4700:94;;;4693:4;4686:5;4682:16;4675:120;4535:271;4896:2;4885:9;4881:18;4868:32;4920:18;4912:6;4909:30;4906:2;;;4952:1;4949;4942:12;4906:2;4987:100;5083:3;5074:6;5063:9;5059:22;4987:100;;;4980:4;4973:5;4969:16;4962:126;4816:283;4111:998;;;;;5116:130;5183:20;;5208:33;5183:20;5208:33;;5394:263;;5509:2;5497:9;5488:7;5484:23;5480:32;5477:2;;;5525:1;5522;5515:12;5477:2;5560:1;5577:64;5633:7;5613:9;5577:64;;5664:366;;;5785:2;5773:9;5764:7;5760:23;5756:32;5753:2;;;5801:1;5798;5791:12;5753:2;5836:1;5853:53;5898:7;5878:9;5853:53;;;5843:63;;5815:97;5943:2;5961:53;6006:7;5997:6;5986:9;5982:22;5961:53;;;5951:63;;5922:98;5747:283;;;;;;6037:257;;6149:2;6137:9;6128:7;6124:23;6120:32;6117:2;;;6165:1;6162;6155:12;6117:2;6200:1;6217:61;6270:7;6250:9;6217:61;;6301:263;;6416:2;6404:9;6395:7;6391:23;6387:32;6384:2;;;6432:1;6429;6422:12;6384:2;6467:1;6484:64;6540:7;6520:9;6484:64;;6571:303;;6706:2;6694:9;6685:7;6681:23;6677:32;6674:2;;;6722:1;6719;6712:12;6674:2;6757:1;6774:84;6850:7;6830:9;6774:84;;6881:395;;7019:2;7007:9;6998:7;6994:23;6990:32;6987:2;;;7035:1;7032;7025:12;6987:2;7070:31;;7121:18;7110:30;;7107:2;;;7153:1;7150;7143:12;7107:2;7173:87;7252:7;7243:6;7232:9;7228:22;7173:87;;7553:883;;;;;;;7752:3;7740:9;7731:7;7727:23;7723:33;7720:2;;;7769:1;7766;7759:12;7720:2;7804:1;7821:53;7866:7;7846:9;7821:53;;;7811:63;;7783:97;7911:2;7929:53;7974:7;7965:6;7954:9;7950:22;7929:53;;;7919:63;;7890:98;8019:2;8037:61;8090:7;8081:6;8070:9;8066:22;8037:61;;;8027:71;;7998:106;8135:2;8153:53;8198:7;8189:6;8178:9;8174:22;8153:53;;;8143:63;;8114:98;8271:3;8260:9;8256:19;8243:33;8296:18;8288:6;8285:30;8282:2;;;8328:1;8325;8318:12;8282:2;8356:64;8412:7;8403:6;8392:9;8388:22;8356:64;;;8346:74;;;;8222:204;7714:722;;;;;;;;;8443:741;;;;;;8617:3;8605:9;8596:7;8592:23;8588:33;8585:2;;;8634:1;8631;8624:12;8585:2;8669:1;8686:53;8731:7;8711:9;8686:53;;;8676:63;;8648:97;8776:2;8794:53;8839:7;8830:6;8819:9;8815:22;8794:53;;;8784:63;;8755:98;8884:2;8902:53;8947:7;8938:6;8927:9;8923:22;8902:53;;;8892:63;;8863:98;9020:2;9009:9;9005:18;8992:32;9044:18;9036:6;9033:30;9030:2;;;9076:1;9073;9066:12;9030:2;9104:64;9160:7;9151:6;9140:9;9136:22;9104:64;;;9094:74;;;;8971:203;8579:605;;;;;;;;;9191:142;9282:45;9321:5;9282:45;;;9277:3;9270:58;9264:69;;;9340:113;9423:24;9441:5;9423:24;;9460:113;9543:24;9561:5;9543:24;;9603:310;;9735:88;9816:6;9811:3;9735:88;;;9728:95;;9835:43;9871:6;9866:3;9859:5;9835:43;;;-1:-1;;9891:16;;9721:192;9921:343;;10031:38;10063:5;10031:38;;;10081:70;10144:6;10139:3;10081:70;;;10074:77;;10156:52;10201:6;10196:3;10189:4;10182:5;10178:16;10156:52;;;10229:29;10251:6;10229:29;;;10220:39;;;;10011:253;-1:-1;;;10011:253;10271:356;;10399:38;10431:5;10399:38;;;10449:88;10530:6;10525:3;10449:88;;;10442:95;;10542:52;10587:6;10582:3;10575:4;10568:5;10564:16;10542:52;;;10606:16;;;;;10379:248;-1:-1;;10379:248;10989:378;;11149:67;11213:2;11208:3;11149:67;;;11249:34;11229:55;;-1:-1;;;11313:2;11304:12;;11297:33;11358:2;11349:12;;11135:232;-1:-1;;11135:232;11376:329;;11536:67;11600:2;11595:3;11536:67;;;11636:31;11616:52;;11696:2;11687:12;;11522:183;-1:-1;;11522:183;11714:296;;11891:83;11972:1;11967:3;11891:83;;12019:332;;12179:67;12243:2;12238:3;12179:67;;;12279:34;12259:55;;12342:2;12333:12;;12165:186;-1:-1;;12165:186;12479:439;;12679:93;12768:3;12759:6;12679:93;;;12672:100;;12790:103;12889:3;12880:6;12872;12790:103;;;12783:110;12660:258;-1:-1;;;;;12660:258;12925:370;;13123:147;13266:3;13123:147;;13302:213;13420:2;13405:18;;13434:71;13409:9;13478:6;13434:71;;13522:647;13750:3;13735:19;;13765:79;13739:9;13817:6;13765:79;;;13855:72;13923:2;13912:9;13908:18;13899:6;13855:72;;;13938;14006:2;13995:9;13991:18;13982:6;13938:72;;;14058:9;14052:4;14048:20;14043:2;14032:9;14028:18;14021:48;14083:76;14154:4;14145:6;14083:76;;;14075:84;13721:448;-1:-1;;;;;;13721:448;14176:324;14322:2;14307:18;;14336:71;14311:9;14380:6;14336:71;;;14418:72;14486:2;14475:9;14471:18;14462:6;14418:72;;14507:435;14681:2;14666:18;;14695:71;14670:9;14739:6;14695:71;;;14777:72;14845:2;14834:9;14830:18;14821:6;14777:72;;;14860;14928:2;14917:9;14913:18;14904:6;14860:72;;14949:301;15087:2;15101:47;;;15072:18;;15162:78;15072:18;15226:6;15162:78;;15257:407;15448:2;15462:47;;;15433:18;;15523:131;15433:18;15523:131;;15671:407;15862:2;15876:47;;;15847:18;;15937:131;15847:18;15937:131;;16085:407;16276:2;16290:47;;;16261:18;;16351:131;16261:18;16351:131;;16499:213;16617:2;16602:18;;16631:71;16606:9;16675:6;16631:71;;16719:324;16865:2;16850:18;;16879:71;16854:9;16923:6;16879:71;;17492:256;17554:2;17548:9;17580:17;;;17655:18;17640:34;;17676:22;;;17637:62;17634:2;;;17712:1;17709;17702:12;17634:2;17728;17721:22;17532:216;;-1:-1;17532:216;17755:330;;17940:18;17932:6;17929:30;17926:2;;;17972:1;17969;17962:12;17926:2;-1:-1;18007:4;17995:17;;;18060:15;;17863:222;18423:121;18510:12;;18481:63;18681:162;18783:19;;;18832:4;18823:14;;18776:67;18852:144;18987:3;18965:31;-1:-1;18965:31;19176:91;;19238:24;19256:5;19238:24;;19380:85;19446:13;19439:21;;19422:43;19472:72;19534:5;19517:27;19551:111;;19633:24;19651:5;19633:24;;19669:121;-1:-1;;;;;19731:54;;19714:76;19876:129;;19963:37;19994:5;19963:37;;20256:145;20337:6;20332:3;20327;20314:30;-1:-1;20393:1;20375:16;;20368:27;20307:94;20410:268;20475:1;20482:101;20496:6;20493:1;20490:13;20482:101;;;20563:11;;;20557:18;20544:11;;;20537:39;20518:2;20511:10;20482:101;;;20598:6;20595:1;20592:13;20589:2;;;20663:1;20654:6;20649:3;20645:16;20638:27;20589:2;20459:219;;;;;20686:97;20774:2;20754:14;-1:-1;;20750:28;;20734:49;20791:117;20860:24;20878:5;20860:24;;;20853:5;20850:35;20840:2;;20899:1;20896;20889:12;20840:2;20834:74;;21055:111;21121:21;21136:5;21121:21;;21173:117;21242:24;21260:5;21242:24;;21297:157;21386:44;21424:5;21386:44;", "source": "/*\n A manager to exit all positions (collateral and debt)\n*/\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\nimport \"../interfaces/IERC20.sol\";\n\nimport \"../interfaces/compound/IComptroller.sol\";\nimport \"../interfaces/compound/ICEther.sol\";\nimport \"../interfaces/compound/ICToken.sol\";\n\nimport \"../interfaces/aave/ILendingPoolAddressesProvider.sol\";\nimport \"../interfaces/aave/ILendingPool.sol\";\nimport \"../interfaces/aave/ILendingPoolParametersProvider.sol\";\n\nimport \"../lib/uniswap/UniswapLiteBase.sol\";\nimport \"../lib/dapphub/Guard.sol\";\n\nimport \"../registries/AddressRegistry.sol\";\n\nimport \"../proxies/DACProxy.sol\";\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\n\n\ncontract DedgeExitManager is UniswapLiteBase {\n using SafeMath for uint256;\n\n function() external payable {}\n\n constructor() public {}\n\n struct DebtMarket {\n address cToken;\n uint256 amount;\n }\n\n struct CollateralMarket {\n address cToken;\n uint256 amount;\n }\n\n struct ExitPositionCalldata {\n address payable exitUserAddress;\n address addressRegistryAddress;\n DebtMarket[] debtMarket;\n CollateralMarket[] collateralMarket;\n }\n\n function _proxyGuardPermit(address payable proxyAddress, address src)\n internal\n {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).permit(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _proxyGuardForbid(address payable proxyAddress, address src)\n internal\n {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).forbid(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _approve(address cToken, uint256 amount) public {\n // Approves CToken contract to call `transferFrom`\n address underlying = ICToken(cToken).underlying();\n require(\n IERC20(underlying).approve(cToken, amount) == true,\n \"cmpnd-mgr-ctoken-approved-failed\"\n );\n }\n\n function _transfer(\n address CEtherAddress,\n address cToken,\n address recipient,\n uint256 amount\n ) internal {\n if (cToken == CEtherAddress) {\n recipient.call.value(amount)(\"\");\n } else {\n require(\n IERC20(ICToken(cToken).underlying()).transfer(\n recipient,\n amount\n ),\n \"cmpnd-mgr-transfer-failed\"\n );\n }\n }\n\n function _repayBorrow(address CEtherAddress, address cToken, uint256 amount)\n internal\n {\n if (cToken == CEtherAddress) {\n ICEther(cToken).repayBorrow.value(amount)();\n } else {\n _approve(cToken, amount);\n require(\n ICToken(cToken).repayBorrow(amount) == 0,\n \"cmpnd-mgr-ctoken-repay-failed\"\n );\n }\n }\n\n function _redeemUnderlying(address cToken, uint256 redeemTokens) internal {\n uint a = ICToken(cToken).redeemUnderlying(redeemTokens);\n require(\n a == 0,\n \"cmpnd-mgr-ctoken-redeem-underlying-failed\"\n );\n }\n\n function _repayDebt(address CEtherAddress, address cToken, uint256 amount)\n internal\n {\n // Always assume we have enough ETH to repay debt\n if (cToken != CEtherAddress) {\n address underlying = ICToken(cToken).underlying();\n\n // Get ETH needed to get ERC20\n uint256 ethAmount = _getEthToTokenOutput(underlying, amount);\n\n // Convert ETH to token\n _ethToToken(underlying, ethAmount);\n }\n\n _repayBorrow(CEtherAddress, cToken, amount);\n }\n\n function _retrieveCollateral(\n address CEtherAddress,\n address cToken,\n uint256 amount\n ) internal returns (uint256) {\n // Redeems token\n _redeemUnderlying(cToken, amount);\n\n if (cToken == CEtherAddress) {\n return amount;\n }\n\n address underlying = ICToken(cToken).underlying();\n return _tokenToEth(underlying, amount);\n }\n\n function exitPositionsPostLoan(\n uint256 _amount,\n uint256 _fee,\n uint256 _protocolFee,\n bytes calldata _params\n ) external {\n // We should now have funds\n ExitPositionCalldata memory epCalldata = abi.decode(\n _params,\n (ExitPositionCalldata)\n );\n\n AddressRegistry addressRegistry = AddressRegistry(\n epCalldata.addressRegistryAddress\n );\n address CEtherAddress = addressRegistry.CEtherAddress();\n\n // Repay debt and retrieve collateral\n for (uint256 i = 0; i < epCalldata.debtMarket.length; i++) {\n _repayDebt(\n CEtherAddress,\n epCalldata.debtMarket[i].cToken,\n epCalldata.debtMarket[i].amount\n );\n }\n\n uint256 totalEthAmount;\n for (uint256 i = 0; i < epCalldata.collateralMarket.length; i++) {\n totalEthAmount += _retrieveCollateral(\n CEtherAddress,\n epCalldata.collateralMarket[i].cToken,\n epCalldata.collateralMarket[i].amount\n );\n }\n\n // Repays (ETH - fees) back to exitAddress\n epCalldata.exitUserAddress.call.value(\n totalEthAmount.sub(_amount).sub(_fee).sub(_protocolFee)\n )(\"\");\n }\n\n function exitPositions(\n uint256 totalEthDebtAmount,\n address dedgeExitManagerAddress,\n address payable dacProxyAddress,\n address addressRegistryAddress,\n bytes calldata executeOperationCalldataParams\n ) external {\n AddressRegistry addressRegistry = AddressRegistry(\n addressRegistryAddress\n );\n\n // Injects target address into calldataParams\n bytes memory addressAndExecuteOperationCalldataParams = abi\n .encodePacked(\n abi.encode(dedgeExitManagerAddress),\n executeOperationCalldataParams\n );\n\n ILendingPool lendingPool = ILendingPool(\n ILendingPoolAddressesProvider(\n addressRegistry.AaveLendingPoolAddressProviderAddress()\n )\n .getLendingPool()\n );\n\n // Approve lendingPool to call proxy\n _proxyGuardPermit(dacProxyAddress, address(lendingPool));\n\n // 3. Flashloan ETH with relevant data\n lendingPool.flashLoan(\n dacProxyAddress,\n addressRegistry.AaveEthAddress(),\n totalEthDebtAmount,\n addressAndExecuteOperationCalldataParams\n );\n\n // Forbids lendingPool to call proxy\n _proxyGuardForbid(dacProxyAddress, address(lendingPool));\n }\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeExitManager.sol", "ast": { @@ -14903,18 +14903,12 @@ "1": { "events": {}, "links": {}, - "address": "0xd773FAE3d5Efce9d00D9104898c45ef432373906", - "transactionHash": "0xdb680a3018be4dbb25620a93f8f2d43c31f224dfc9854f1670c7d0f489e2aaf0" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb", - "transactionHash": "0xc0964b4e8492f115325605b0f72796b6abcb800ebc30f06483b643b68ebc39fd" + "address": "0x81BFDCF729B5cAC3c4f1F906b63F26E5865b615B", + "transactionHash": "0x82498d85626e8c726f0f826b97105e36e0036427bc3812cfb30ff2eb501c8bb4" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T05:45:42.935Z", + "updatedAt": "2020-04-03T06:28:59.299Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeGeneralManager.json b/packages/smart-contracts/artifacts/DedgeGeneralManager.json index 04d941e..4374336 100644 --- a/packages/smart-contracts/artifacts/DedgeGeneralManager.json +++ b/packages/smart-contracts/artifacts/DedgeGeneralManager.json @@ -58,11 +58,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferERC20\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeGeneralManager.sol\":\"DedgeGeneralManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeGeneralManager.sol\":{\"keccak256\":\"0xe75927383d619b8de3c1402d78d3aaaf88458574764542c9394c2cc0946e63be\",\"urls\":[\"bzz-raw://30a4adde7b1a4e0af212f49e07f6e849141a654dab45ed4cc107a858d038b2e5\",\"dweb:/ipfs/QmQM5TnC2Zh8WNSYR8snHtvZJ9vjykYEUT5zLU7stG9Leb\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50610350806100206000396000f3fe6080604052600436106100295760003560e01c80637b1a49091461002b5780639db5dbe414610086575b005b34801561003757600080fd5b506100846004803603604081101561004e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610101565b005b34801561009257600080fd5b506100ff600480360360608110156100a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506101e2565b005b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b50509050806101dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f67656e2d6d67722d7472616e736665722d6574682d6661696c6564000000000081525060200191505060405180910390fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561026957600080fd5b505af115801561027d573d6000803e3d6000fd5b505050506040513d602081101561029357600080fd5b8101908080519060200190929190505050610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f67656e2d6d67722d7472616e736665727065726332302d6661696c656400000081525060200191505060405180910390fd5b50505056fea265627a7a72315820cc9b806697bf504c70c196d509411aacc6e45b00e7295e16f7a8aace8895c23164736f6c63430005100032", - "deployedBytecode": "0x6080604052600436106100295760003560e01c80637b1a49091461002b5780639db5dbe414610086575b005b34801561003757600080fd5b506100846004803603604081101561004e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610101565b005b34801561009257600080fd5b506100ff600480360360608110156100a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506101e2565b005b60008273ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b50509050806101dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f67656e2d6d67722d7472616e736665722d6574682d6661696c6564000000000081525060200191505060405180910390fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561026957600080fd5b505af115801561027d573d6000803e3d6000fd5b505050506040513d602081101561029357600080fd5b8101908080519060200190929190505050610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f67656e2d6d67722d7472616e736665727065726332302d6661696c656400000081525060200191505060405180910390fd5b50505056fea265627a7a72315820cc9b806697bf504c70c196d509411aacc6e45b00e7295e16f7a8aace8895c23164736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferERC20\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeGeneralManager.sol\":\"DedgeGeneralManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeGeneralManager.sol\":{\"keccak256\":\"0xe75927383d619b8de3c1402d78d3aaaf88458574764542c9394c2cc0946e63be\",\"urls\":[\"bzz-raw://30a4adde7b1a4e0af212f49e07f6e849141a654dab45ed4cc107a858d038b2e5\",\"dweb:/ipfs/QmQM5TnC2Zh8WNSYR8snHtvZJ9vjykYEUT5zLU7stG9Leb\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50610264806100206000396000f3fe6080604052600436106100295760003560e01c80637b1a49091461002b5780639db5dbe414610064575b005b34801561003757600080fd5b506100296004803603604081101561004e57600080fd5b506001600160a01b0381351690602001356100a7565b34801561007057600080fd5b506100296004803603606081101561008757600080fd5b506001600160a01b03813581169160208101359091169060400135610152565b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146100f2576040519150601f19603f3d011682016040523d82523d6000602084013e6100f7565b606091505b505090508061014d576040805162461bcd60e51b815260206004820152601b60248201527f67656e2d6d67722d7472616e736665722d6574682d6661696c65640000000000604482015290519081900360640190fd5b505050565b816001600160a01b031663a9059cbb84836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156101b257600080fd5b505af11580156101c6573d6000803e3d6000fd5b505050506040513d60208110156101dc57600080fd5b505161014d576040805162461bcd60e51b815260206004820152601d60248201527f67656e2d6d67722d7472616e736665727065726332302d6661696c6564000000604482015290519081900360640190fdfea265627a7a72315820e4b7c51f04bd28e043c006459b1c82ddf378f82a8e721f62caad2fe53f35fbf064736f6c63430005100032", + "deployedBytecode": "0x6080604052600436106100295760003560e01c80637b1a49091461002b5780639db5dbe414610064575b005b34801561003757600080fd5b506100296004803603604081101561004e57600080fd5b506001600160a01b0381351690602001356100a7565b34801561007057600080fd5b506100296004803603606081101561008757600080fd5b506001600160a01b03813581169160208101359091169060400135610152565b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146100f2576040519150601f19603f3d011682016040523d82523d6000602084013e6100f7565b606091505b505090508061014d576040805162461bcd60e51b815260206004820152601b60248201527f67656e2d6d67722d7472616e736665722d6574682d6661696c65640000000000604482015290519081900360640190fd5b505050565b816001600160a01b031663a9059cbb84836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156101b257600080fd5b505af11580156101c6573d6000803e3d6000fd5b505050506040513d60208110156101dc57600080fd5b505161014d576040805162461bcd60e51b815260206004820152601d60248201527f67656e2d6d67722d7472616e736665727065726332302d6661696c6564000000604482015290519081900360640190fdfea265627a7a72315820e4b7c51f04bd28e043c006459b1c82ddf378f82a8e721f62caad2fe53f35fbf064736f6c63430005100032", "sourceMap": "158:519:27:-;;;230:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:23:27;158:519;;;;;;", - "deployedSourceMap": "158:519:27:-;;;;;;;;;;;;;;;;;;;;;;;;259:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;259:185:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;259:185:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;450:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;450:225:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;450:225:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;259:185;330:12;348:9;:14;;369:6;348:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;329:51:27;;;398:7;390:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;259:185;;;:::o;450:225::-;572:12;565:29;;;595:9;606:6;565:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;565:48:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;565:48:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;565:48:27;;;;;;;;;;;;;;;;544:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;450:225;;;:::o", + "deployedSourceMap": "158:519:27:-;;;;;;;;;;;;;;;;;;;;;;;;259:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;259:185:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;259:185:27;;;;;;;;:::i;450:225::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;450:225:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;450:225:27;;;;;;;;;;;;;;;;;:::i;259:185::-;348:32;;330:12;;-1:-1:-1;;;;;348:14:27;;;369:6;;330:12;348:32;330:12;348:32;369:6;348:14;:32;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;329:51:27;;;398:7;390:47;;;;;-1:-1:-1;;;390:47:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;259:185;;;:::o;450:225::-;572:12;-1:-1:-1;;;;;565:29:27;;595:9;606:6;565:48;;;;;;;;;;;;;-1:-1:-1;;;;;565:48:27;-1:-1:-1;;;;;565:48:27;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;565:48:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;565:48:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;565:48:27;544:124;;;;;-1:-1:-1;;;544:124:27;;;;;;;;;;;;;;;;;;;;;;;;;;", "source": "/* A \"general\" manager for dedge to facillitate the transfer of\n ERC20 compatible tokens\n*/\n\npragma solidity 0.5.16;\n\nimport \"../interfaces/IERC20.sol\";\n\ncontract DedgeGeneralManager {\n function () external payable {}\n\n constructor() public {}\n\n function transferETH(address recipient, uint amount) public {\n (bool success, ) = recipient.call.value(amount)(\"\");\n require(success, \"gen-mgr-transfer-eth-failed\");\n }\n\n function transferERC20(address recipient, address erc20Address, uint amount) public {\n require(\n IERC20(erc20Address).transfer(recipient, amount),\n \"gen-mgr-transferperc20-failed\"\n );\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeGeneralManager.sol", "ast": { @@ -390,10 +390,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "390:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -661,10 +661,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "544:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1129,10 +1129,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "390:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1400,10 +1400,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7797, - 7798 + 7830, + 7831 ], - "referencedDeclaration": 7798, + "referencedDeclaration": 7831, "src": "544:7:27", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1551,18 +1551,12 @@ "1": { "events": {}, "links": {}, - "address": "0xa69B107791b8D0dF8c317dD9533260826C11F80C", - "transactionHash": "0xde945e6428b6ee6292e528d6dbc221d537ae20bb4fc820e01d3e7fdbe3463f12" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0xC89Ce4735882C9F0f0FE26686c53074E09B0D550", - "transactionHash": "0x405f2ed10c0f43992f4a1123bb97e40ec9d588e749f0db0072bac2722c9066c2" + "address": "0x40b4C8B5EE1FDd5259E40907E257f11819681b3d", + "transactionHash": "0xaa4d204145bd7e85f599d7e1a7e662165c187bb19831b2276b12a7402d56effc" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T05:45:42.884Z", + "updatedAt": "2020-04-03T06:28:59.288Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DedgeMakerManager.json b/packages/smart-contracts/artifacts/DedgeMakerManager.json index dfff931..c1cd87d 100644 --- a/packages/smart-contracts/artifacts/DedgeMakerManager.json +++ b/packages/smart-contracts/artifacts/DedgeMakerManager.json @@ -371,11 +371,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dink\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dart\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"getVaultCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ink\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"getVaultDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"debt\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeMakerManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdpId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"importMakerVault\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"importMakerVaultPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol\":\"DedgeMakerManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol\":{\"keccak256\":\"0xc670eb42195a3be8cf8ea3d11f3afa457377bfd52382094f65c63182e679863f\",\"urls\":[\"bzz-raw://855acaff1c943a63987c31ee6db3362b6c85ab419046430eaf160a96c0dc70e4\",\"dweb:/ipfs/QmWEdWqVUfsYKrJcxVQ9sowhTGUsaoydpUWsQjHkFmAPHX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol\":{\"keccak256\":\"0x2f6d78b485392995fd2deb695a6983e82971feaf2ba629474d4ee0c5ee769614\",\"urls\":[\"bzz-raw://feca374d541b17754aecc30a9a5312de3ad406597df1d4c8b4f123bb8bca8036\",\"dweb:/ipfs/QmYdtfcTp4Dvozfa3PpLaWTxg8WnzQiie2cVnq5QPUD1CJ\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol\":{\"keccak256\":\"0x668fd43717315e1be5bf188d316d6a01e0560a42cde699a9b9d56b22436ddf1c\",\"urls\":[\"bzz-raw://082390efee5a477860b87da8f35543903746cf831fc209a39ddf06075e2438f9\",\"dweb:/ipfs/QmTVQdmTzZyLvwBX81ic73BUiCPwMaZEVEgMxomaC4UWXG\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50613b15806100206000396000f3fe6080604052600436106100a75760003560e01c80636d68b70b116100645780636d68b70b146101db57806396e8d72c14610204578063ba727a951461022d578063bcd6deec14610256578063c56167c61461027f578063ddd927b2146102a8576100a7565b8063131fb710146100a95780631558b048146100d25780631d10f231146100fb5780633edec14e1461012457806361d2d7dc146101615780636aa3ee111461019e575b005b3480156100b557600080fd5b506100d060048036036100cb9190810190612caf565b6102d1565b005b3480156100de57600080fd5b506100f960048036036100f49190810190612ee1565b6106ce565b005b34801561010757600080fd5b50610122600480360361011d9190810190612e92565b610743565b005b34801561013057600080fd5b5061014b60048036036101469190810190612e56565b6107b5565b6040516101589190613763565b60405180910390f35b34801561016d57600080fd5b5061018860048036036101839190810190612e56565b6109f7565b6040516101959190613763565b60405180910390f35b3480156101aa57600080fd5b506101c560048036036101c09190810190612e07565b610c2c565b6040516101d29190613763565b60405180910390f35b3480156101e757600080fd5b5061020260048036036101fd9190810190612d41565b610cc4565b005b34801561021057600080fd5b5061022b60048036036102269190810190612f44565b61108d565b005b34801561023957600080fd5b50610254600480360361024f9190810190612ee1565b611102565b005b34801561026257600080fd5b5061027d60048036036102789190810190612d41565b611177565b005b34801561028b57600080fd5b506102a660048036036102a19190810190612db8565b611465565b005b3480156102b457600080fd5b506102cf60048036036102ca919081019061311a565b6115c3565b005b600084905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031e57600080fd5b505afa158015610332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103569190810190612c86565b9050600061036482876107b5565b90506060896040516020016103799190613556565b604051602081830303815290604052868660405160200161039c93929190613530565b604051602081830303815290604052905060008473ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561047257600080fd5b505afa158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104aa9190810190612c86565b90506105368573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f557600080fd5b505afa158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061052d9190810190612c86565b898d6001611102565b6105408a8261215c565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8773ffffffffffffffffffffffffffffffffffffffff1663ee2a94116040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a357600080fd5b505afa1580156105b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105db9190810190612c86565b86866040518563ffffffff1660e01b81526004016105fc9493929190613571565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b505050506106b78573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561067757600080fd5b505afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106af9190810190612c86565b896001610743565b6106c18a8261235e565b5050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16639bb8f8388484846040518463ffffffff1660e01b815260040161070b939291906137a7565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fcafcc6883836040518363ffffffff1660e01b815260040161077e92919061377e565b600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50505050505050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108369190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016108739190613763565b60206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108c39190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016109009190613763565b60206040518083038186803b15801561091857600080fd5b505afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109509190810190613011565b905060008673ffffffffffffffffffffffffffffffffffffffff16638161b120876040518263ffffffff1660e01b815260040161098d9190613763565b60206040518083038186803b1580156109a557600080fd5b505afa1580156109b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109dd9190810190612c86565b90506109eb84828585612560565b94505050505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4057600080fd5b505afa158015610a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a789190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610ab59190613763565b60206040518083038186803b158015610acd57600080fd5b505afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b059190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610b429190613763565b60206040518083038186803b158015610b5a57600080fd5b505afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b929190810190613011565b90508273ffffffffffffffffffffffffffffffffffffffff16632424be5c82846040518363ffffffff1660e01b8152600401610bcf929190613623565b604080518083038186803b158015610be657600080fd5b505afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1e91908101906130de565b508094505050505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff16636090dec584846040518363ffffffff1660e01b8152600401610c69929190613623565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cbb91908101906130b5565b90509392505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d449190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610d819190613763565b60206040518083038186803b158015610d9957600080fd5b505afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd19190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610e0e9190613763565b60206040518083038186803b158015610e2657600080fd5b505afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e5e9190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401610e9d929190613623565b604080518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610eec91908101906130de565b915050610f058784610f0087878888612560565b611465565b610f1f8987610f1388612772565b6000038460000361108d565b610f2b898730886106ce565b8773ffffffffffffffffffffffffffffffffffffffff1663ef693bed30876040518363ffffffff1660e01b8152600401610f669291906135bd565b600060405180830381600087803b158015610f8057600080fd5b505af1158015610f94573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110189190810190613063565b73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b81526004016110509190613763565b600060405180830381600087803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b50505050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8484846040518463ffffffff1660e01b81526004016110ca939291906137de565b600060405180830381600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16630b63fb628484846040518463ffffffff1660e01b815260040161113f939291906137a7565b600060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111f79190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016112349190613763565b60206040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112849190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016112c19190613763565b60206040518083038186803b1580156112d957600080fd5b505afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113119190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401611350929190613623565b604080518083038186803b15801561136757600080fd5b505afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061139f91908101906130de565b9150506113b887846113b387878888612560565b611465565b60006113c489876127c0565b90506113e08a886113d484612772565b6000038560000361108d565b6113ec8a8830846106ce565b8873ffffffffffffffffffffffffffffffffffffffff1663ef693bed30886040518363ffffffff1660e01b81526004016114279291906135bd565b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b5050505050505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114ad57600080fd5b505af11580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e59190810190613063565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b815260040161151f9291906135bd565b600060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b815260040161158c9291906135bd565b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50505050505050565b6000838587010190506115d46129c1565b83836115e3919081019061308c565b905060008160000151905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061166e9190810190612c86565b905060008360400151905060006116898386602001516109f7565b9050606060026040519080825280602002602001820160405280156116bd5781602001602082028038833980820191505090505b50905082816000815181106116ce57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561174e57600080fd5b505afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117869190810190612c86565b8160018151811061179357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060608573ffffffffffffffffffffffffffffffffffffffff1663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561181557600080fd5b505afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061184d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b815260040161188591906135e6565b600060405180830381600087803b15801561189f57600080fd5b505af11580156118b3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506118dc9190810190612fa7565b90506000816000815181106118ed57fe5b602002602001015114611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906136e3565b60405180910390fd5b60008160018151811061194457fe5b60200260200101511461198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613743565b60405180910390fd5b7f4554482d410000000000000000000000000000000000000000000000000000008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd89602001516040518263ffffffff1660e01b81526004016119ea9190613763565b60206040518083038186803b158015611a0257600080fd5b505afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3a9190810190613011565b1415611d7857611b4b858773ffffffffffffffffffffffffffffffffffffffff16638ec9f15f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8a57600080fd5b505afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ac29190810190612c86565b8873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b409190810190612c86565b8a6020015187610cc4565b8573ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9157600080fd5b505afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bc99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16631249c58b846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c1057600080fd5b505af1158015611c24573d6000803e3d6000fd5b505050505060008673ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ca99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8a6040518263ffffffff1660e01b8152600401611ce19190613763565b602060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d3391908101906130b5565b14611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a906136c3565b60405180910390fd5b61214d565b611e178588606001518873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dff9190810190612c86565b8a60200151611e128c6060015189612859565b611177565b6000611e278489608001516128f2565b90508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6f57600080fd5b505afa158015611e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea79190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b8152600401611ee19291906135bd565b602060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f339190810190612fe8565b5060008573ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b8152600401611f6f9190613763565b602060405180830381600087803b158015611f8957600080fd5b505af1158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fc191908101906130b5565b14612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613703565b60405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561204957600080fd5b505afa15801561205d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120819190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8b6040518263ffffffff1660e01b81526004016120b99190613763565b602060405180830381600087803b1580156120d357600080fd5b505af11580156120e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210b91908101906130b5565b1461214b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612142906136c3565b60405180910390fd5b505b50505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121dc919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561225357600080fd5b505afa158015612267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061228b9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123099190810190613011565b6040518463ffffffff1660e01b81526004016123279392919061364c565b600060405180830381600087803b15801561234157600080fd5b505af1158015612355573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a657600080fd5b505afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123de919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561245557600080fd5b505afa158015612469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061248d9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156124d357600080fd5b505afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061250b9190810190613011565b6040518463ffffffff1660e01b81526004016125299392919061364c565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040161259c9190613608565b60a06040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125ec919081019061319a565b50505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b815260040161262f929190613623565b604080518083038186803b15801561264657600080fd5b505afa15801561265a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061267e91908101906130de565b91505060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346886040518263ffffffff1660e01b81526004016126bc9190613556565b60206040518083038186803b1580156126d457600080fd5b505afa1580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061270c91908101906130b5565b9050600061272361271d848661290f565b83612971565b90506b033b2e3c9fd0803ce8000000818161273a57fe5b04945080612754866b033b2e3c9fd0803ce800000061290f565b1061275f5784612764565b600185015b945050505050949350505050565b600081905060008112156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613723565b60405180910390fd5b919050565b6000612851828473ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561280e57600080fd5b505af1158015612822573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061284691908101906130b5565b601203600a0a61290f565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156128a357600080fd5b505af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128db91908101906130b5565b601203600a0a82816128e957fe5b04905092915050565b60008160ff16601203600a0a838161290657fe5b04905092915050565b60008082148061292c575082828385029250828161292957fe5b04145b61296b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296290613683565b60405180910390fd5b92915050565b60008282840391508111156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b2906136a3565b60405180910390fd5b92915050565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff1681525090565b600081359050612a4481613a03565b92915050565b600081519050612a5981613a03565b92915050565b600081359050612a6e81613a1a565b92915050565b600082601f830112612a8557600080fd5b8151612a98612a9382613842565b613815565b91508181835260208401935060208101905083856020840282011115612abd57600080fd5b60005b83811015612aed5781612ad38882612c5c565b845260208401935060208301925050600181019050612ac0565b5050505092915050565b600081519050612b0681613a31565b92915050565b600081359050612b1b81613a48565b92915050565b600081519050612b3081613a48565b92915050565b60008083601f840112612b4857600080fd5b8235905067ffffffffffffffff811115612b6157600080fd5b602083019150836001820283011115612b7957600080fd5b9250929050565b600081519050612b8f81613a5f565b92915050565b600081519050612ba481613a76565b92915050565b600081359050612bb981613a8d565b92915050565b600060a08284031215612bd157600080fd5b612bdb60a0613815565b90506000612beb84828501612a35565b6000830152506020612bff84828501612c47565b6020830152506040612c1384828501612a35565b6040830152506060612c2784828501612a35565b6060830152506080612c3b84828501612c71565b60808301525092915050565b600081359050612c5681613aa4565b92915050565b600081519050612c6b81613aa4565b92915050565b600081359050612c8081613abb565b92915050565b600060208284031215612c9857600080fd5b6000612ca684828501612a4a565b91505092915050565b60008060008060008060a08789031215612cc857600080fd5b6000612cd689828a01612a35565b9650506020612ce789828a01612a5f565b9550506040612cf889828a01612a35565b9450506060612d0989828a01612c47565b935050608087013567ffffffffffffffff811115612d2657600080fd5b612d3289828a01612b36565b92509250509295509295509295565b600080600080600060a08688031215612d5957600080fd5b6000612d6788828901612a35565b9550506020612d7888828901612a35565b9450506040612d8988828901612a35565b9350506060612d9a88828901612c47565b9250506080612dab88828901612c47565b9150509295509295909350565b600080600060608486031215612dcd57600080fd5b6000612ddb86828701612a35565b9350506020612dec86828701612a35565b9250506040612dfd86828701612c47565b9150509250925092565b600080600060608486031215612e1c57600080fd5b6000612e2a86828701612a35565b9350506020612e3b86828701612b0c565b9250506040612e4c86828701612a35565b9150509250925092565b60008060408385031215612e6957600080fd5b6000612e7785828601612a35565b9250506020612e8885828601612c47565b9150509250929050565b600080600060608486031215612ea757600080fd5b6000612eb586828701612a35565b9350506020612ec686828701612c47565b9250506040612ed786828701612a35565b9150509250925092565b60008060008060808587031215612ef757600080fd5b6000612f0587828801612a35565b9450506020612f1687828801612c47565b9350506040612f2787828801612a35565b9250506060612f3887828801612c47565b91505092959194509250565b60008060008060808587031215612f5a57600080fd5b6000612f6887828801612a35565b9450506020612f7987828801612c47565b9350506040612f8a87828801612baa565b9250506060612f9b87828801612baa565b91505092959194509250565b600060208284031215612fb957600080fd5b600082015167ffffffffffffffff811115612fd357600080fd5b612fdf84828501612a74565b91505092915050565b600060208284031215612ffa57600080fd5b600061300884828501612af7565b91505092915050565b60006020828403121561302357600080fd5b600061303184828501612b21565b91505092915050565b60006020828403121561304c57600080fd5b600061305a84828501612b80565b91505092915050565b60006020828403121561307557600080fd5b600061308384828501612b95565b91505092915050565b600060a0828403121561309e57600080fd5b60006130ac84828501612bbf565b91505092915050565b6000602082840312156130c757600080fd5b60006130d584828501612c5c565b91505092915050565b600080604083850312156130f157600080fd5b60006130ff85828601612c5c565b925050602061311085828601612c5c565b9150509250929050565b60008060008060006080868803121561313257600080fd5b600061314088828901612c47565b955050602061315188828901612c47565b945050604061316288828901612c47565b935050606086013567ffffffffffffffff81111561317f57600080fd5b61318b88828901612b36565b92509250509295509295909350565b600080600080600060a086880312156131b257600080fd5b60006131c088828901612c5c565b95505060206131d188828901612c5c565b94505060406131e288828901612c5c565b93505060606131f388828901612c5c565b925050608061320488828901612c5c565b9150509295509295909350565b600061321d8383613238565b60208301905092915050565b6132328161397a565b82525050565b613241816138db565b82525050565b613250816138db565b82525050565b60006132618261387a565b61326b818561389d565b93506132768361386a565b8060005b838110156132a757815161328e8882613211565b975061329983613890565b92505060018101905061327a565b5085935050505092915050565b6132bd8161390b565b82525050565b60006132cf83856138bf565b93506132dc8385846139b0565b82840190509392505050565b60006132f382613885565b6132fd81856138ae565b935061330d8185602086016139bf565b613316816139f2565b840191505092915050565b600061332c82613885565b61333681856138bf565b93506133468185602086016139bf565b80840191505092915050565b61335b81613939565b82525050565b600061336e600c836138ca565b91507f6d756c2d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ae600c836138ca565b91507f7375622d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ee600f836138ca565b91507f6461692d626f72726f772d6661696c00000000000000000000000000000000006000830152602082019050919050565b600061342e6014836138ca565b91507f6d6b722d656e7465722d67656d2d6661696c65640000000000000000000000006000830152602082019050919050565b600061346e600f836138ca565b91507f67656d2d737570706c792d6661696c00000000000000000000000000000000006000830152602082019050919050565b60006134ae600c836138ca565b91507f696e742d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006134ee6014836138ca565b91507f6d6b722d656e7465722d6461692d6661696c65640000000000000000000000006000830152602082019050919050565b61352a81613963565b82525050565b600061353c8286613321565b91506135498284866132c3565b9150819050949350505050565b600060208201905061356b6000830184613247565b92915050565b60006080820190506135866000830187613229565b6135936020830186613247565b6135a06040830185613521565b81810360608301526135b281846132e8565b905095945050505050565b60006040820190506135d26000830185613247565b6135df6020830184613521565b9392505050565b600060208201905081810360008301526136008184613256565b905092915050565b600060208201905061361d60008301846132b4565b92915050565b600060408201905061363860008301856132b4565b6136456020830184613247565b9392505050565b600060608201905061366160008301866132b4565b61366e60208301856132b4565b61367b60408301846132b4565b949350505050565b6000602082019050818103600083015261369c81613361565b9050919050565b600060208201905081810360008301526136bc816133a1565b9050919050565b600060208201905081810360008301526136dc816133e1565b9050919050565b600060208201905081810360008301526136fc81613421565b9050919050565b6000602082019050818103600083015261371c81613461565b9050919050565b6000602082019050818103600083015261373c816134a1565b9050919050565b6000602082019050818103600083015261375c816134e1565b9050919050565b60006020820190506137786000830184613521565b92915050565b60006040820190506137936000830185613521565b6137a06020830184613247565b9392505050565b60006060820190506137bc6000830186613521565b6137c96020830185613247565b6137d66040830184613521565b949350505050565b60006060820190506137f36000830186613521565b6138006020830185613352565b61380d6040830184613352565b949350505050565b6000604051905081810181811067ffffffffffffffff8211171561383857600080fd5b8060405250919050565b600067ffffffffffffffff82111561385957600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006138e682613943565b9050919050565b60006138f882613943565b9050919050565b60008115159050919050565b6000819050919050565b6000613920826138db565b9050919050565b6000613932826138db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139858261398c565b9050919050565b60006139978261399e565b9050919050565b60006139a982613943565b9050919050565b82818337600083830152505050565b60005b838110156139dd5780820151818401526020810190506139c2565b838111156139ec576000848401525b50505050565b6000601f19601f8301169050919050565b613a0c816138db565b8114613a1757600080fd5b50565b613a23816138ed565b8114613a2e57600080fd5b50565b613a3a816138ff565b8114613a4557600080fd5b50565b613a518161390b565b8114613a5c57600080fd5b50565b613a6881613915565b8114613a7357600080fd5b50565b613a7f81613927565b8114613a8a57600080fd5b50565b613a9681613939565b8114613aa157600080fd5b50565b613aad81613963565b8114613ab857600080fd5b50565b613ac48161396d565b8114613acf57600080fd5b5056fea365627a7a72315820a496790ec0ededf96271382ad6922968fdc05a770fd7e03717a4b2033d911e856c6578706572696d656e74616cf564736f6c63430005100040", - "deployedBytecode": "0x6080604052600436106100a75760003560e01c80636d68b70b116100645780636d68b70b146101db57806396e8d72c14610204578063ba727a951461022d578063bcd6deec14610256578063c56167c61461027f578063ddd927b2146102a8576100a7565b8063131fb710146100a95780631558b048146100d25780631d10f231146100fb5780633edec14e1461012457806361d2d7dc146101615780636aa3ee111461019e575b005b3480156100b557600080fd5b506100d060048036036100cb9190810190612caf565b6102d1565b005b3480156100de57600080fd5b506100f960048036036100f49190810190612ee1565b6106ce565b005b34801561010757600080fd5b50610122600480360361011d9190810190612e92565b610743565b005b34801561013057600080fd5b5061014b60048036036101469190810190612e56565b6107b5565b6040516101589190613763565b60405180910390f35b34801561016d57600080fd5b5061018860048036036101839190810190612e56565b6109f7565b6040516101959190613763565b60405180910390f35b3480156101aa57600080fd5b506101c560048036036101c09190810190612e07565b610c2c565b6040516101d29190613763565b60405180910390f35b3480156101e757600080fd5b5061020260048036036101fd9190810190612d41565b610cc4565b005b34801561021057600080fd5b5061022b60048036036102269190810190612f44565b61108d565b005b34801561023957600080fd5b50610254600480360361024f9190810190612ee1565b611102565b005b34801561026257600080fd5b5061027d60048036036102789190810190612d41565b611177565b005b34801561028b57600080fd5b506102a660048036036102a19190810190612db8565b611465565b005b3480156102b457600080fd5b506102cf60048036036102ca919081019061311a565b6115c3565b005b600084905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031e57600080fd5b505afa158015610332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103569190810190612c86565b9050600061036482876107b5565b90506060896040516020016103799190613556565b604051602081830303815290604052868660405160200161039c93929190613530565b604051602081830303815290604052905060008473ffffffffffffffffffffffffffffffffffffffff16633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061042d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561047257600080fd5b505afa158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104aa9190810190612c86565b90506105368573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104f557600080fd5b505afa158015610509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061052d9190810190612c86565b898d6001611102565b6105408a8261215c565b8073ffffffffffffffffffffffffffffffffffffffff16635cffe9de8b8773ffffffffffffffffffffffffffffffffffffffff1663ee2a94116040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a357600080fd5b505afa1580156105b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105db9190810190612c86565b86866040518563ffffffff1660e01b81526004016105fc9493929190613571565b600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b505050506106b78573ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561067757600080fd5b505afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106af9190810190612c86565b896001610743565b6106c18a8261235e565b5050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16639bb8f8388484846040518463ffffffff1660e01b815260040161070b939291906137a7565b600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fcafcc6883836040518363ffffffff1660e01b815260040161077e92919061377e565b600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50505050505050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108369190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016108739190613763565b60206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108c39190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016109009190613763565b60206040518083038186803b15801561091857600080fd5b505afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109509190810190613011565b905060008673ffffffffffffffffffffffffffffffffffffffff16638161b120876040518263ffffffff1660e01b815260040161098d9190613763565b60206040518083038186803b1580156109a557600080fd5b505afa1580156109b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109dd9190810190612c86565b90506109eb84828585612560565b94505050505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4057600080fd5b505afa158015610a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a789190810190612c86565b905060008473ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610ab59190613763565b60206040518083038186803b158015610acd57600080fd5b505afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b059190810190612c86565b905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610b429190613763565b60206040518083038186803b158015610b5a57600080fd5b505afa158015610b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b929190810190613011565b90508273ffffffffffffffffffffffffffffffffffffffff16632424be5c82846040518363ffffffff1660e01b8152600401610bcf929190613623565b604080518083038186803b158015610be657600080fd5b505afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1e91908101906130de565b508094505050505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff16636090dec584846040518363ffffffff1660e01b8152600401610c69929190613623565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cbb91908101906130b5565b90509392505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d449190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b8152600401610d819190613763565b60206040518083038186803b158015610d9957600080fd5b505afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd19190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b8152600401610e0e9190613763565b60206040518083038186803b158015610e2657600080fd5b505afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e5e9190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401610e9d929190613623565b604080518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610eec91908101906130de565b915050610f058784610f0087878888612560565b611465565b610f1f8987610f1388612772565b6000038460000361108d565b610f2b898730886106ce565b8773ffffffffffffffffffffffffffffffffffffffff1663ef693bed30876040518363ffffffff1660e01b8152600401610f669291906135bd565b600060405180830381600087803b158015610f8057600080fd5b505af1158015610f94573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110189190810190613063565b73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b81526004016110509190613763565b600060405180830381600087803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b50505050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8484846040518463ffffffff1660e01b81526004016110ca939291906137de565b600060405180830381600087803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16630b63fb628484846040518463ffffffff1660e01b815260040161113f939291906137a7565b600060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111f79190810190612c86565b905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004016112349190613763565b60206040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112849190810190612c86565b905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004016112c19190613763565b60206040518083038186803b1580156112d957600080fd5b505afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113119190810190613011565b905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401611350929190613623565b604080518083038186803b15801561136757600080fd5b505afa15801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061139f91908101906130de565b9150506113b887846113b387878888612560565b611465565b60006113c489876127c0565b90506113e08a886113d484612772565b6000038560000361108d565b6113ec8a8830846106ce565b8873ffffffffffffffffffffffffffffffffffffffff1663ef693bed30886040518363ffffffff1660e01b81526004016114279291906135bd565b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b5050505050505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114ad57600080fd5b505af11580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e59190810190613063565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b815260040161151f9291906135bd565b600060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b815260040161158c9291906135bd565b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50505050505050565b6000838587010190506115d46129c1565b83836115e3919081019061308c565b905060008160000151905060008173ffffffffffffffffffffffffffffffffffffffff16635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061166e9190810190612c86565b905060008360400151905060006116898386602001516109f7565b9050606060026040519080825280602002602001820160405280156116bd5781602001602082028038833980820191505090505b50905082816000815181106116ce57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561174e57600080fd5b505afa158015611762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117869190810190612c86565b8160018151811061179357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060608573ffffffffffffffffffffffffffffffffffffffff1663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561181557600080fd5b505afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061184d9190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c2998238836040518263ffffffff1660e01b815260040161188591906135e6565b600060405180830381600087803b15801561189f57600080fd5b505af11580156118b3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506118dc9190810190612fa7565b90506000816000815181106118ed57fe5b602002602001015114611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906136e3565b60405180910390fd5b60008160018151811061194457fe5b60200260200101511461198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613743565b60405180910390fd5b7f4554482d410000000000000000000000000000000000000000000000000000008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd89602001516040518263ffffffff1660e01b81526004016119ea9190613763565b60206040518083038186803b158015611a0257600080fd5b505afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a3a9190810190613011565b1415611d7857611b4b858773ffffffffffffffffffffffffffffffffffffffff16638ec9f15f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8a57600080fd5b505afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ac29190810190612c86565b8873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0857600080fd5b505afa158015611b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b409190810190612c86565b8a6020015187610cc4565b8573ffffffffffffffffffffffffffffffffffffffff1663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9157600080fd5b505afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bc99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff16631249c58b846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c1057600080fd5b505af1158015611c24573d6000803e3d6000fd5b505050505060008673ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ca99190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8a6040518263ffffffff1660e01b8152600401611ce19190613763565b602060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d3391908101906130b5565b14611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a906136c3565b60405180910390fd5b61214d565b611e178588606001518873ffffffffffffffffffffffffffffffffffffffff1663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dc757600080fd5b505afa158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dff9190810190612c86565b8a60200151611e128c6060015189612859565b611177565b6000611e278489608001516128f2565b90508473ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611e6f57600080fd5b505afa158015611e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea79190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b386836040518363ffffffff1660e01b8152600401611ee19291906135bd565b602060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f339190810190612fe8565b5060008573ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b8152600401611f6f9190613763565b602060405180830381600087803b158015611f8957600080fd5b505af1158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fc191908101906130b5565b14612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613703565b60405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff1663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561204957600080fd5b505afa15801561205d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120819190810190612c86565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec8b6040518263ffffffff1660e01b81526004016120b99190613763565b602060405180830381600087803b1580156120d357600080fd5b505af11580156120e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210b91908101906130b5565b1461214b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612142906136c3565b60405180910390fd5b505b50505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121dc919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff1663f0217ce58360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561225357600080fd5b505afa158015612267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061228b9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123099190810190613011565b6040518463ffffffff1660e01b81526004016123279392919061364c565b600060405180830381600087803b15801561234157600080fd5b505af1158015612355573d6000803e3d6000fd5b50505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a657600080fd5b505afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123de919081019061303a565b90508073ffffffffffffffffffffffffffffffffffffffff166379d88d878360601b6bffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561245557600080fd5b505afa158015612469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061248d9190810190613011565b8473ffffffffffffffffffffffffffffffffffffffff1663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b1580156124d357600080fd5b505afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061250b9190810190613011565b6040518463ffffffff1660e01b81526004016125299392919061364c565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b815260040161259c9190613608565b60a06040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125ec919081019061319a565b50505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b815260040161262f929190613623565b604080518083038186803b15801561264657600080fd5b505afa15801561265a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061267e91908101906130de565b91505060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346886040518263ffffffff1660e01b81526004016126bc9190613556565b60206040518083038186803b1580156126d457600080fd5b505afa1580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061270c91908101906130b5565b9050600061272361271d848661290f565b83612971565b90506b033b2e3c9fd0803ce8000000818161273a57fe5b04945080612754866b033b2e3c9fd0803ce800000061290f565b1061275f5784612764565b600185015b945050505050949350505050565b600081905060008112156127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290613723565b60405180910390fd5b919050565b6000612851828473ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561280e57600080fd5b505af1158015612822573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061284691908101906130b5565b601203600a0a61290f565b905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156128a357600080fd5b505af11580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128db91908101906130b5565b601203600a0a82816128e957fe5b04905092915050565b60008160ff16601203600a0a838161290657fe5b04905092915050565b60008082148061292c575082828385029250828161292957fe5b04145b61296b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296290613683565b60405180910390fd5b92915050565b60008282840391508111156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b2906136a3565b60405180910390fd5b92915050565b6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff1681525090565b600081359050612a4481613a03565b92915050565b600081519050612a5981613a03565b92915050565b600081359050612a6e81613a1a565b92915050565b600082601f830112612a8557600080fd5b8151612a98612a9382613842565b613815565b91508181835260208401935060208101905083856020840282011115612abd57600080fd5b60005b83811015612aed5781612ad38882612c5c565b845260208401935060208301925050600181019050612ac0565b5050505092915050565b600081519050612b0681613a31565b92915050565b600081359050612b1b81613a48565b92915050565b600081519050612b3081613a48565b92915050565b60008083601f840112612b4857600080fd5b8235905067ffffffffffffffff811115612b6157600080fd5b602083019150836001820283011115612b7957600080fd5b9250929050565b600081519050612b8f81613a5f565b92915050565b600081519050612ba481613a76565b92915050565b600081359050612bb981613a8d565b92915050565b600060a08284031215612bd157600080fd5b612bdb60a0613815565b90506000612beb84828501612a35565b6000830152506020612bff84828501612c47565b6020830152506040612c1384828501612a35565b6040830152506060612c2784828501612a35565b6060830152506080612c3b84828501612c71565b60808301525092915050565b600081359050612c5681613aa4565b92915050565b600081519050612c6b81613aa4565b92915050565b600081359050612c8081613abb565b92915050565b600060208284031215612c9857600080fd5b6000612ca684828501612a4a565b91505092915050565b60008060008060008060a08789031215612cc857600080fd5b6000612cd689828a01612a35565b9650506020612ce789828a01612a5f565b9550506040612cf889828a01612a35565b9450506060612d0989828a01612c47565b935050608087013567ffffffffffffffff811115612d2657600080fd5b612d3289828a01612b36565b92509250509295509295509295565b600080600080600060a08688031215612d5957600080fd5b6000612d6788828901612a35565b9550506020612d7888828901612a35565b9450506040612d8988828901612a35565b9350506060612d9a88828901612c47565b9250506080612dab88828901612c47565b9150509295509295909350565b600080600060608486031215612dcd57600080fd5b6000612ddb86828701612a35565b9350506020612dec86828701612a35565b9250506040612dfd86828701612c47565b9150509250925092565b600080600060608486031215612e1c57600080fd5b6000612e2a86828701612a35565b9350506020612e3b86828701612b0c565b9250506040612e4c86828701612a35565b9150509250925092565b60008060408385031215612e6957600080fd5b6000612e7785828601612a35565b9250506020612e8885828601612c47565b9150509250929050565b600080600060608486031215612ea757600080fd5b6000612eb586828701612a35565b9350506020612ec686828701612c47565b9250506040612ed786828701612a35565b9150509250925092565b60008060008060808587031215612ef757600080fd5b6000612f0587828801612a35565b9450506020612f1687828801612c47565b9350506040612f2787828801612a35565b9250506060612f3887828801612c47565b91505092959194509250565b60008060008060808587031215612f5a57600080fd5b6000612f6887828801612a35565b9450506020612f7987828801612c47565b9350506040612f8a87828801612baa565b9250506060612f9b87828801612baa565b91505092959194509250565b600060208284031215612fb957600080fd5b600082015167ffffffffffffffff811115612fd357600080fd5b612fdf84828501612a74565b91505092915050565b600060208284031215612ffa57600080fd5b600061300884828501612af7565b91505092915050565b60006020828403121561302357600080fd5b600061303184828501612b21565b91505092915050565b60006020828403121561304c57600080fd5b600061305a84828501612b80565b91505092915050565b60006020828403121561307557600080fd5b600061308384828501612b95565b91505092915050565b600060a0828403121561309e57600080fd5b60006130ac84828501612bbf565b91505092915050565b6000602082840312156130c757600080fd5b60006130d584828501612c5c565b91505092915050565b600080604083850312156130f157600080fd5b60006130ff85828601612c5c565b925050602061311085828601612c5c565b9150509250929050565b60008060008060006080868803121561313257600080fd5b600061314088828901612c47565b955050602061315188828901612c47565b945050604061316288828901612c47565b935050606086013567ffffffffffffffff81111561317f57600080fd5b61318b88828901612b36565b92509250509295509295909350565b600080600080600060a086880312156131b257600080fd5b60006131c088828901612c5c565b95505060206131d188828901612c5c565b94505060406131e288828901612c5c565b93505060606131f388828901612c5c565b925050608061320488828901612c5c565b9150509295509295909350565b600061321d8383613238565b60208301905092915050565b6132328161397a565b82525050565b613241816138db565b82525050565b613250816138db565b82525050565b60006132618261387a565b61326b818561389d565b93506132768361386a565b8060005b838110156132a757815161328e8882613211565b975061329983613890565b92505060018101905061327a565b5085935050505092915050565b6132bd8161390b565b82525050565b60006132cf83856138bf565b93506132dc8385846139b0565b82840190509392505050565b60006132f382613885565b6132fd81856138ae565b935061330d8185602086016139bf565b613316816139f2565b840191505092915050565b600061332c82613885565b61333681856138bf565b93506133468185602086016139bf565b80840191505092915050565b61335b81613939565b82525050565b600061336e600c836138ca565b91507f6d756c2d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ae600c836138ca565b91507f7375622d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006133ee600f836138ca565b91507f6461692d626f72726f772d6661696c00000000000000000000000000000000006000830152602082019050919050565b600061342e6014836138ca565b91507f6d6b722d656e7465722d67656d2d6661696c65640000000000000000000000006000830152602082019050919050565b600061346e600f836138ca565b91507f67656d2d737570706c792d6661696c00000000000000000000000000000000006000830152602082019050919050565b60006134ae600c836138ca565b91507f696e742d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b60006134ee6014836138ca565b91507f6d6b722d656e7465722d6461692d6661696c65640000000000000000000000006000830152602082019050919050565b61352a81613963565b82525050565b600061353c8286613321565b91506135498284866132c3565b9150819050949350505050565b600060208201905061356b6000830184613247565b92915050565b60006080820190506135866000830187613229565b6135936020830186613247565b6135a06040830185613521565b81810360608301526135b281846132e8565b905095945050505050565b60006040820190506135d26000830185613247565b6135df6020830184613521565b9392505050565b600060208201905081810360008301526136008184613256565b905092915050565b600060208201905061361d60008301846132b4565b92915050565b600060408201905061363860008301856132b4565b6136456020830184613247565b9392505050565b600060608201905061366160008301866132b4565b61366e60208301856132b4565b61367b60408301846132b4565b949350505050565b6000602082019050818103600083015261369c81613361565b9050919050565b600060208201905081810360008301526136bc816133a1565b9050919050565b600060208201905081810360008301526136dc816133e1565b9050919050565b600060208201905081810360008301526136fc81613421565b9050919050565b6000602082019050818103600083015261371c81613461565b9050919050565b6000602082019050818103600083015261373c816134a1565b9050919050565b6000602082019050818103600083015261375c816134e1565b9050919050565b60006020820190506137786000830184613521565b92915050565b60006040820190506137936000830185613521565b6137a06020830184613247565b9392505050565b60006060820190506137bc6000830186613521565b6137c96020830185613247565b6137d66040830184613521565b949350505050565b60006060820190506137f36000830186613521565b6138006020830185613352565b61380d6040830184613352565b949350505050565b6000604051905081810181811067ffffffffffffffff8211171561383857600080fd5b8060405250919050565b600067ffffffffffffffff82111561385957600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006138e682613943565b9050919050565b60006138f882613943565b9050919050565b60008115159050919050565b6000819050919050565b6000613920826138db565b9050919050565b6000613932826138db565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006139858261398c565b9050919050565b60006139978261399e565b9050919050565b60006139a982613943565b9050919050565b82818337600083830152505050565b60005b838110156139dd5780820151818401526020810190506139c2565b838111156139ec576000848401525b50505050565b6000601f19601f8301169050919050565b613a0c816138db565b8114613a1757600080fd5b50565b613a23816138ed565b8114613a2e57600080fd5b50565b613a3a816138ff565b8114613a4557600080fd5b50565b613a518161390b565b8114613a5c57600080fd5b50565b613a6881613915565b8114613a7357600080fd5b50565b613a7f81613927565b8114613a8a57600080fd5b50565b613a9681613939565b8114613aa157600080fd5b50565b613aad81613963565b8114613ab857600080fd5b50565b613ac48161396d565b8114613acf57600080fd5b5056fea365627a7a72315820a496790ec0ededf96271382ad6922968fdc05a770fd7e03717a4b2033d911e856c6578706572696d656e74616cf564736f6c63430005100040", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dink\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dart\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"getVaultCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ink\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"getVaultDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"debt\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dedgeMakerManagerAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"dacProxyAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdpId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"executeOperationCalldataParams\",\"type\":\"bytes\"}],\"name\":\"importMakerVault\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_aaveFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"importMakerVaultPostLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol\":\"DedgeMakerManager\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol\":{\"keccak256\":\"0xc670eb42195a3be8cf8ea3d11f3afa457377bfd52382094f65c63182e679863f\",\"urls\":[\"bzz-raw://855acaff1c943a63987c31ee6db3362b6c85ab419046430eaf160a96c0dc70e4\",\"dweb:/ipfs/QmWEdWqVUfsYKrJcxVQ9sowhTGUsaoydpUWsQjHkFmAPHX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/BytesLib.sol\":{\"keccak256\":\"0x2127d94e9d0443c4f0a5a8ebd8fd8746c7ea4e4d3849e3a45c41943019571ea7\",\"urls\":[\"bzz-raw://dbe24f863129a5062658ec1e6bc2695d7427dd8783aec86903125867f6343a4f\",\"dweb:/ipfs/QmfX7eArFhPnTa1bwjpfse3ni6EapoHfzuhdXxMxKU8kNb\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Auth.sol\":{\"keccak256\":\"0x7636abae52593354ed288e67b6c2e5e1df218f753f6c253ae691cb5252274cf1\",\"urls\":[\"bzz-raw://d66e47ce74476c103bb8a1b11d618232276d4b57badfd7d96a45e9c881e83543\",\"dweb:/ipfs/QmXMWVNLRdiBHmnTx1c2DFvidnXpFuiy4CMh2T2avWEQ2h\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Guard.sol\":{\"keccak256\":\"0xf38f1b725d7568da1b3a210190566e00daa3f241accba9fd6a906ae48e62b151\",\"urls\":[\"bzz-raw://83abf26fe875dd5599abfa2c9b387cb3ce7e70b4fe3ae0b3e2127f807b708ea1\",\"dweb:/ipfs/QmRntwBkLrh8SosWWsM1aC2cP7wMswCPuBKLmJzgQB1xeY\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Note.sol\":{\"keccak256\":\"0xc1440658c9e69c115e90b60f1a3b424155d9f0fa495a689bce0a202d8daf1df7\",\"urls\":[\"bzz-raw://dc3c2c615db44839d9353908fa2935cab29e0739ef559f00397724b904e5187f\",\"dweb:/ipfs/Qma5uk2NoqVnZgZF3fCXPRfkZMbxfEKuYo6NABq79We1t1\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/dapphub/Proxy.sol\":{\"keccak256\":\"0x36bff82bc9233b5ee86b50df83efb4915c50d3c5716e9bc463b290ab87a4b6bb\",\"urls\":[\"bzz-raw://486f7dfeaa00779677f8e139c54fb3f7f8043f66fe344ec35bd5d3873205f77e\",\"dweb:/ipfs/QmUVwqSEod9L97Cqz1fPv9jXPescnR4vNXAm4zdf2gZmgv\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol\":{\"keccak256\":\"0x2f6d78b485392995fd2deb695a6983e82971feaf2ba629474d4ee0c5ee769614\",\"urls\":[\"bzz-raw://feca374d541b17754aecc30a9a5312de3ad406597df1d4c8b4f123bb8bca8036\",\"dweb:/ipfs/QmYdtfcTp4Dvozfa3PpLaWTxg8WnzQiie2cVnq5QPUD1CJ\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol\":{\"keccak256\":\"0x668fd43717315e1be5bf188d316d6a01e0560a42cde699a9b9d56b22436ddf1c\",\"urls\":[\"bzz-raw://082390efee5a477860b87da8f35543903746cf831fc209a39ddf06075e2438f9\",\"dweb:/ipfs/QmTVQdmTzZyLvwBX81ic73BUiCPwMaZEVEgMxomaC4UWXG\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/proxies/DACProxy.sol\":{\"keccak256\":\"0xfcd524540f6e01a5ef58192d42d87d296fad5a0d13dd883c1b5b604435befd97\",\"urls\":[\"bzz-raw://398eb7da5785008a974d476886bf95ed1793b4e5f19b56735dba4f998217ad75\",\"dweb:/ipfs/QmQtViYpthTUNzdgv4AEhSW6wMFneE5AdLerMf4q5eWWzN\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/registries/AddressRegistry.sol\":{\"keccak256\":\"0x0f9a1a23e6eabb0a3cd78e2e2a0b23b15f8d175ab02d71aac63eb6e38fb82657\",\"urls\":[\"bzz-raw://6cdf61439a849257726d6fe87cc5455c008763485170f2609ed477a3f3dc0d68\",\"dweb:/ipfs/QmbLvvK3AmCaSKPXSnHNsd5iWMFzCr9HEd4cPmbPLZxZKs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50612d71806100206000396000f3fe6080604052600436106100a75760003560e01c80636d68b70b116100645780636d68b70b1461017f57806396e8d72c1461019f578063ba727a95146101bf578063bcd6deec146101df578063c56167c6146101ff578063ddd927b21461021f576100a7565b8063131fb710146100a95780631558b048146100c95780631d10f231146100e95780633edec14e1461010957806361d2d7dc1461013f5780636aa3ee111461015f575b005b3480156100b557600080fd5b506100a76100c4366004612422565b61023f565b3480156100d557600080fd5b506100a76100e43660046125f1565b6105df565b3480156100f557600080fd5b506100a7610104366004612574565b610647565b34801561011557600080fd5b506101296101243660046125b7565b6106ac565b6040516101369190612b3b565b60405180910390f35b34801561014b57600080fd5b5061012961015a3660046125b7565b6108b9565b34801561016b57600080fd5b5061012961017a366004612574565b610ab8565b34801561018b57600080fd5b506100a761019a3660046124b2565b610b43565b3480156101ab57600080fd5b506100a76101ba366004612652565b610eac565b3480156101cb57600080fd5b506100a76101da3660046125f1565b610edc565b3480156101eb57600080fd5b506100a76101fa3660046124b2565b610f0c565b34801561020b57600080fd5b506100a761021a366004612527565b6111b4565b34801561022b57600080fd5b506100a761023a366004612773565b6112b4565b60008490506000816001600160a01b0316635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102b79190810190612404565b905060006102c582876106ac565b90506060896040516020016102da9190612abd565b60408051601f19818403018152908290526102fb9188908890602001612a9b565b60405160208183030381529060405290506000846001600160a01b0316633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561034757600080fd5b505afa15801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061037f9190810190612404565b6001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b757600080fd5b505afa1580156103cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103ef9190810190612404565b905061046e856001600160a01b0316635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042d57600080fd5b505afa158015610441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104659190810190612404565b898d6001610edc565b6104788a82611c47565b806001600160a01b0316635cffe9de8b876001600160a01b031663ee2a94116040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c157600080fd5b505afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104f99190810190612404565b86866040518563ffffffff1660e01b815260040161051a9493929190612acb565b600060405180830381600087803b15801561053457600080fd5b505af1158015610548573d6000803e3d6000fd5b505050506105c8856001600160a01b0316635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561058857600080fd5b505afa15801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c09190810190612404565b896001610647565b6105d28a82611dde565b5050505050505050505050565b6040516313771f0760e31b81526001600160a01b03851690639bb8f8389061060f90869086908690600401612bfc565b600060405180830381600087803b15801561062957600080fd5b505af115801561063d573d6000803e3d6000fd5b5050505050505050565b604051631f95f98d60e31b81526001600160a01b0384169063fcafcc68906106759085908590600401612b49565b600060405180830381600087803b15801561068f57600080fd5b505af11580156106a3573d6000803e3d6000fd5b50505050505050565b600080836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e857600080fd5b505afa1580156106fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107209190810190612404565b90506000846001600160a01b0316632726b073856040518263ffffffff1660e01b81526004016107509190612b3b565b60206040518083038186803b15801561076857600080fd5b505afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107a09190810190612404565b90506000856001600160a01b0316632c2cb9fd866040518263ffffffff1660e01b81526004016107d09190612b3b565b60206040518083038186803b1580156107e857600080fd5b505afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082091908101906126e9565b90506000866001600160a01b0316638161b120876040518263ffffffff1660e01b81526004016108509190612b3b565b60206040518083038186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108a09190810190612404565b90506108ae84828585611eae565b979650505050505050565b600080836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f557600080fd5b505afa158015610909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092d9190810190612404565b90506000846001600160a01b0316632726b073856040518263ffffffff1660e01b815260040161095d9190612b3b565b60206040518083038186803b15801561097557600080fd5b505afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109ad9190810190612404565b90506000856001600160a01b0316632c2cb9fd866040518263ffffffff1660e01b81526004016109dd9190612b3b565b60206040518083038186803b1580156109f557600080fd5b505afa158015610a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2d91908101906126e9565b6040516309092f9760e21b81529091506001600160a01b03841690632424be5c90610a5e9084908690600401612b49565b604080518083038186803b158015610a7557600080fd5b505afa158015610a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aad9190810190612743565b509695505050505050565b604051636090dec560e01b81526000906001600160a01b03851690636090dec590610ae99086908690600401612b49565b602060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b3b91908101906126e9565b949350505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7e57600080fd5b505afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb69190810190612404565b90506000866001600160a01b0316632726b073856040518263ffffffff1660e01b8152600401610be69190612b3b565b60206040518083038186803b158015610bfe57600080fd5b505afa158015610c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c369190810190612404565b90506000876001600160a01b0316632c2cb9fd866040518263ffffffff1660e01b8152600401610c669190612b3b565b60206040518083038186803b158015610c7e57600080fd5b505afa158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cb691908101906126e9565b90506000836001600160a01b0316632424be5c83856040518363ffffffff1660e01b8152600401610ce8929190612b49565b604080518083038186803b158015610cff57600080fd5b505afa158015610d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d379190810190612743565b915050610d4b878461021a87878888611eae565b610d658987610d5988612091565b60000384600003610eac565b610d71898730886105df565b60405163ef693bed60e01b81526001600160a01b0389169063ef693bed90610d9f9030908990600401612b0f565b600060405180830381600087803b158015610db957600080fd5b505af1158015610dcd573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e449190810190612707565b6001600160a01b0316632e1a7d4d866040518263ffffffff1660e01b8152600401610e6f9190612b3b565b600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050505050505050565b6040516345e6bdcd60e01b81526001600160a01b038516906345e6bdcd9061060f90869086908690600401612b64565b6040516305b1fdb160e11b81526001600160a01b03851690630b63fb629061060f90869086908690600401612bfc565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4757600080fd5b505afa158015610f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f7f9190810190612404565b90506000866001600160a01b0316632726b073856040518263ffffffff1660e01b8152600401610faf9190612b3b565b60206040518083038186803b158015610fc757600080fd5b505afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fff9190810190612404565b90506000876001600160a01b0316632c2cb9fd866040518263ffffffff1660e01b815260040161102f9190612b3b565b60206040518083038186803b15801561104757600080fd5b505afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061107f91908101906126e9565b90506000836001600160a01b0316632424be5c83856040518363ffffffff1660e01b81526004016110b1929190612b49565b604080518083038186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111009190810190612743565b915050611114878461021a87878888611eae565b600061112089876120b8565b905061113c8a8861113084612091565b60000385600003610eac565b6111488a8830846105df565b60405163ef693bed60e01b81526001600160a01b038a169063ef693bed906111769030908a90600401612b0f565b600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b5050505050505050505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111ef57600080fd5b505af1158015611203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112279190810190612707565b6001600160a01b031663095ea7b384836040518363ffffffff1660e01b8152600401611254929190612b0f565b600060405180830381600087803b15801561126e57600080fd5b505af1158015611282573d6000803e3d6000fd5b5050604051633b4da69f60e01b81526001600160a01b0386169250633b4da69f91506106759085908590600401612b0f565b84840183016112c161223e565b6112cd83850185612725565b90506000816000015190506000816001600160a01b0316635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134b9190810190612404565b905060008360400151905060006113668386602001516108b9565b604080516002808252606080830184529394509091602083019080388339019050509050828160008151811061139857fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846001600160a01b031663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f157600080fd5b505afa158015611405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114299190810190612404565b8160018151811061143657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506060856001600160a01b031663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114c99190810190612404565b6001600160a01b031663c2998238836040518263ffffffff1660e01b81526004016114f49190612b2a565b600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261154a9190810190612696565b90508060008151811061155957fe5b60200260200101516000146115895760405162461bcd60e51b815260040161158090612bbc565b60405180910390fd5b8060018151811061159657fe5b60200260200101516000146115bd5760405162461bcd60e51b815260040161158090612bec565b6020870151604051632c2cb9fd60e01b8152644554482d4160d81b916001600160a01b03881691632c2cb9fd916115f691600401612b3b565b60206040518083038186803b15801561160e57600080fd5b505afa158015611622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061164691908101906126e9565b14156119115761173d85876001600160a01b0316638ec9f15f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561168957600080fd5b505afa15801561169d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116c19190810190612404565b886001600160a01b031663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fa57600080fd5b505afa15801561170e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117329190810190612404565b8a6020015187610b43565b856001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561177657600080fd5b505afa15801561178a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117ae9190810190612404565b6001600160a01b0316631249c58b846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117e857600080fd5b505af11580156117fc573d6000803e3d6000fd5b5050505050856001600160a01b031663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561183a57600080fd5b505afa15801561184e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118729190810190612404565b6001600160a01b031663c5ebeaec896040518263ffffffff1660e01b815260040161189d9190612b3b565b602060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118ef91908101906126e9565b1561190c5760405162461bcd60e51b815260040161158090612bac565b610e9d565b61199e858860600151886001600160a01b031663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561195357600080fd5b505afa158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061198b9190810190612404565b8a602001516101fa8c6060015189612143565b60006119ae8489608001516121d0565b9050846001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a219190810190612404565b6001600160a01b031663095ea7b386836040518363ffffffff1660e01b8152600401611a4e929190612b0f565b602060405180830381600087803b158015611a6857600080fd5b505af1158015611a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aa091908101906126cb565b5060405163140e25ad60e31b81526001600160a01b0386169063a0712d6890611acd908490600401612b3b565b602060405180830381600087803b158015611ae757600080fd5b505af1158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b1f91908101906126e9565b15611b3c5760405162461bcd60e51b815260040161158090612bcc565b866001600160a01b031663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7557600080fd5b505afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bad9190810190612404565b6001600160a01b031663c5ebeaec8a6040518263ffffffff1660e01b8152600401611bd89190612b3b565b602060405180830381600087803b158015611bf257600080fd5b505af1158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2a91908101906126e9565b156111a45760405162461bcd60e51b815260040161158090612bac565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8257600080fd5b505afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cba9190810190612707565b9050806001600160a01b031663f0217ce58360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d4f91908101906126e9565b846001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8857600080fd5b505afa158015611d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dc091908101906126e9565b6040518463ffffffff1660e01b815260040161067593929190612b64565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1957600080fd5b505afa158015611e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e519190810190612707565b9050806001600160a01b03166379d88d878360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015611d1757600080fd5b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b8152600401611edd9190612b3b565b60a06040518083038186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f2d91908101906127f1565b5050509150506000866001600160a01b0316632424be5c85876040518363ffffffff1660e01b8152600401611f63929190612b49565b604080518083038186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fb29190810190612743565b9150506000876001600160a01b0316636c25b346886040518263ffffffff1660e01b8152600401611fe39190612abd565b60206040518083038186803b158015611ffb57600080fd5b505afa15801561200f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061203391908101906126e9565b9050600061204a61204484866121e4565b8361221b565b90506b033b2e3c9fd0803ce80000008104945080612074866b033b2e3c9fd0803ce80000006121e4565b1061207f5784612084565b846001015b9998505050505050505050565b8060008112156120b35760405162461bcd60e51b815260040161158090612bdc565b919050565b600061213c82846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156120f957600080fd5b505af115801561210d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061213191908101906126e9565b601203600a0a6121e4565b9392505050565b6000826001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561218057600080fd5b505af1158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121b891908101906126e9565b601203600a0a82816121c657fe5b0490505b92915050565b60008160ff16601203600a0a83816121c657fe5b60008115806121ff575050808202828282816121fc57fe5b04145b6121ca5760405162461bcd60e51b815260040161158090612b8c565b808203828111156121ca5760405162461bcd60e51b815260040161158090612b9c565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b80356121ca81612cf3565b80516121ca81612cf3565b600082601f83011261229357600080fd5b81516122a66122a182612c3e565b612c17565b915081818352602084019350602081019050838560208402820111156122cb57600080fd5b60005b838110156122f757816122e18882612317565b84525060209283019291909101906001016122ce565b5050505092915050565b80516121ca81612d0a565b80356121ca81612d13565b80516121ca81612d13565b60008083601f84011261233457600080fd5b50813567ffffffffffffffff81111561234c57600080fd5b60208301915083600182028301111561236457600080fd5b9250929050565b80516121ca81612d1c565b600060a0828403121561238857600080fd5b61239260a0612c17565b905060006123a0848461226c565b82525060206123b18484830161230c565b60208301525060406123c58482850161226c565b60408301525060606123d98482850161226c565b60608301525060806123ed848285016123f9565b60808301525092915050565b80356121ca81612d25565b60006020828403121561241657600080fd5b6000610b3b8484612277565b60008060008060008060a0878903121561243b57600080fd5b6000612447898961226c565b965050602061245889828a0161226c565b955050604061246989828a0161226c565b945050606061247a89828a0161230c565b935050608087013567ffffffffffffffff81111561249757600080fd5b6124a389828a01612322565b92509250509295509295509295565b600080600080600060a086880312156124ca57600080fd5b60006124d6888861226c565b95505060206124e78882890161226c565b94505060406124f88882890161226c565b93505060606125098882890161230c565b925050608061251a8882890161230c565b9150509295509295909350565b60008060006060848603121561253c57600080fd5b6000612548868661226c565b93505060206125598682870161226c565b925050604061256a8682870161230c565b9150509250925092565b60008060006060848603121561258957600080fd5b6000612595868661226c565b93505060206125a68682870161230c565b925050604061256a8682870161226c565b600080604083850312156125ca57600080fd5b60006125d6858561226c565b92505060206125e78582860161230c565b9150509250929050565b6000806000806080858703121561260757600080fd5b6000612613878761226c565b94505060206126248782880161230c565b93505060406126358782880161226c565b92505060606126468782880161230c565b91505092959194509250565b6000806000806080858703121561266857600080fd5b6000612674878761226c565b94505060206126858782880161230c565b93505060406126358782880161230c565b6000602082840312156126a857600080fd5b815167ffffffffffffffff8111156126bf57600080fd5b610b3b84828501612282565b6000602082840312156126dd57600080fd5b6000610b3b8484612301565b6000602082840312156126fb57600080fd5b6000610b3b8484612317565b60006020828403121561271957600080fd5b6000610b3b848461236b565b600060a0828403121561273757600080fd5b6000610b3b8484612376565b6000806040838503121561275657600080fd5b60006127628585612317565b92505060206125e785828601612317565b60008060008060006080868803121561278b57600080fd5b6000612797888861230c565b95505060206127a88882890161230c565b94505060406127b98882890161230c565b935050606086013567ffffffffffffffff8111156127d657600080fd5b6127e288828901612322565b92509250509295509295909350565b600080600080600060a0868803121561280957600080fd5b60006128158888612317565b955050602061282688828901612317565b945050604061283788828901612317565b935050606061284888828901612317565b925050608061251a88828901612317565b6000612865838361287c565b505060200190565b61287681612ca2565b82525050565b61287681612c72565b600061289082612c65565b61289a8185612c69565b93506128a583612c5f565b8060005b838110156128d35781516128bd8882612859565b97506128c883612c5f565b9250506001016128a9565b509495945050505050565b61287681612c82565b60006128f383856120b3565b9350612900838584612cad565b50500190565b600061291182612c65565b61291b8185612c69565b935061292b818560208601612cb9565b61293481612ce9565b9093019392505050565b600061294982612c65565b61295381856120b3565b9350612963818560208601612cb9565b9290920192915050565b600061297a600c83612c69565b6b6d756c2d6f766572666c6f7760a01b815260200192915050565b60006129a2600c83612c69565b6b7375622d6f766572666c6f7760a01b815260200192915050565b60006129ca600f83612c69565b6e19185a4b589bdc9c9bddcb59985a5b608a1b815260200192915050565b60006129f5601483612c69565b731b5adc8b595b9d195c8b59d95b4b59985a5b195960621b815260200192915050565b6000612a25600f83612c69565b6e19d95b4b5cdd5c1c1b1e4b59985a5b608a1b815260200192915050565b6000612a50600c83612c69565b6b696e742d6f766572666c6f7760a01b815260200192915050565b6000612a78601483612c69565b731b5adc8b595b9d195c8b59185a4b59985a5b195960621b815260200192915050565b6000612aa7828661293e565b9150612ab48284866128e7565b95945050505050565b602081016121ca828461287c565b60808101612ad9828761286d565b612ae6602083018661287c565b612af360408301856128de565b8181036060830152612b058184612906565b9695505050505050565b60408101612b1d828561287c565b61213c60208301846128de565b6020808252810161213c8184612885565b602081016121ca82846128de565b60408101612b5782856128de565b61213c602083018461287c565b60608101612b7282866128de565b612b7f60208301856128de565b610b3b60408301846128de565b602080825281016121ca8161296d565b602080825281016121ca81612995565b602080825281016121ca816129bd565b602080825281016121ca816129e8565b602080825281016121ca81612a18565b602080825281016121ca81612a43565b602080825281016121ca81612a6b565b60608101612c0a82866128de565b612b7f602083018561287c565b60405181810167ffffffffffffffff81118282101715612c3657600080fd5b604052919050565b600067ffffffffffffffff821115612c5557600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b60006121ca82612c90565b151590565b90565b60006121ca82612c72565b6001600160a01b031690565b60ff1690565b60006121ca82612c85565b82818337506000910152565b60005b83811015612cd4578181015183820152602001612cbc565b83811115612ce3576000848401525b50505050565b601f01601f191690565b612cfc81612c72565b8114612d0757600080fd5b50565b612cfc81612c7d565b612cfc81612c82565b612cfc81612c85565b612cfc81612c9c56fea365627a7a723158202382211b20407aa7cc1454ef0da1b3e1da76eb668946419ee57a4525293c828b6c6578706572696d656e74616cf564736f6c63430005100040", + "deployedBytecode": "0x6080604052600436106100a75760003560e01c80636d68b70b116100645780636d68b70b1461017f57806396e8d72c1461019f578063ba727a95146101bf578063bcd6deec146101df578063c56167c6146101ff578063ddd927b21461021f576100a7565b8063131fb710146100a95780631558b048146100c95780631d10f231146100e95780633edec14e1461010957806361d2d7dc1461013f5780636aa3ee111461015f575b005b3480156100b557600080fd5b506100a76100c4366004612422565b61023f565b3480156100d557600080fd5b506100a76100e43660046125f1565b6105df565b3480156100f557600080fd5b506100a7610104366004612574565b610647565b34801561011557600080fd5b506101296101243660046125b7565b6106ac565b6040516101369190612b3b565b60405180910390f35b34801561014b57600080fd5b5061012961015a3660046125b7565b6108b9565b34801561016b57600080fd5b5061012961017a366004612574565b610ab8565b34801561018b57600080fd5b506100a761019a3660046124b2565b610b43565b3480156101ab57600080fd5b506100a76101ba366004612652565b610eac565b3480156101cb57600080fd5b506100a76101da3660046125f1565b610edc565b3480156101eb57600080fd5b506100a76101fa3660046124b2565b610f0c565b34801561020b57600080fd5b506100a761021a366004612527565b6111b4565b34801561022b57600080fd5b506100a761023a366004612773565b6112b4565b60008490506000816001600160a01b0316635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102b79190810190612404565b905060006102c582876106ac565b90506060896040516020016102da9190612abd565b60408051601f19818403018152908290526102fb9188908890602001612a9b565b60405160208183030381529060405290506000846001600160a01b0316633f6dc33b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561034757600080fd5b505afa15801561035b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061037f9190810190612404565b6001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b757600080fd5b505afa1580156103cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103ef9190810190612404565b905061046e856001600160a01b0316635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042d57600080fd5b505afa158015610441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104659190810190612404565b898d6001610edc565b6104788a82611c47565b806001600160a01b0316635cffe9de8b876001600160a01b031663ee2a94116040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c157600080fd5b505afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104f99190810190612404565b86866040518563ffffffff1660e01b815260040161051a9493929190612acb565b600060405180830381600087803b15801561053457600080fd5b505af1158015610548573d6000803e3d6000fd5b505050506105c8856001600160a01b0316635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561058857600080fd5b505afa15801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105c09190810190612404565b896001610647565b6105d28a82611dde565b5050505050505050505050565b6040516313771f0760e31b81526001600160a01b03851690639bb8f8389061060f90869086908690600401612bfc565b600060405180830381600087803b15801561062957600080fd5b505af115801561063d573d6000803e3d6000fd5b5050505050505050565b604051631f95f98d60e31b81526001600160a01b0384169063fcafcc68906106759085908590600401612b49565b600060405180830381600087803b15801561068f57600080fd5b505af11580156106a3573d6000803e3d6000fd5b50505050505050565b600080836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e857600080fd5b505afa1580156106fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107209190810190612404565b90506000846001600160a01b0316632726b073856040518263ffffffff1660e01b81526004016107509190612b3b565b60206040518083038186803b15801561076857600080fd5b505afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107a09190810190612404565b90506000856001600160a01b0316632c2cb9fd866040518263ffffffff1660e01b81526004016107d09190612b3b565b60206040518083038186803b1580156107e857600080fd5b505afa1580156107fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082091908101906126e9565b90506000866001600160a01b0316638161b120876040518263ffffffff1660e01b81526004016108509190612b3b565b60206040518083038186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108a09190810190612404565b90506108ae84828585611eae565b979650505050505050565b600080836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f557600080fd5b505afa158015610909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092d9190810190612404565b90506000846001600160a01b0316632726b073856040518263ffffffff1660e01b815260040161095d9190612b3b565b60206040518083038186803b15801561097557600080fd5b505afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109ad9190810190612404565b90506000856001600160a01b0316632c2cb9fd866040518263ffffffff1660e01b81526004016109dd9190612b3b565b60206040518083038186803b1580156109f557600080fd5b505afa158015610a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2d91908101906126e9565b6040516309092f9760e21b81529091506001600160a01b03841690632424be5c90610a5e9084908690600401612b49565b604080518083038186803b158015610a7557600080fd5b505afa158015610a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aad9190810190612743565b509695505050505050565b604051636090dec560e01b81526000906001600160a01b03851690636090dec590610ae99086908690600401612b49565b602060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b3b91908101906126e9565b949350505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7e57600080fd5b505afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb69190810190612404565b90506000866001600160a01b0316632726b073856040518263ffffffff1660e01b8152600401610be69190612b3b565b60206040518083038186803b158015610bfe57600080fd5b505afa158015610c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c369190810190612404565b90506000876001600160a01b0316632c2cb9fd866040518263ffffffff1660e01b8152600401610c669190612b3b565b60206040518083038186803b158015610c7e57600080fd5b505afa158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cb691908101906126e9565b90506000836001600160a01b0316632424be5c83856040518363ffffffff1660e01b8152600401610ce8929190612b49565b604080518083038186803b158015610cff57600080fd5b505afa158015610d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d379190810190612743565b915050610d4b878461021a87878888611eae565b610d658987610d5988612091565b60000384600003610eac565b610d71898730886105df565b60405163ef693bed60e01b81526001600160a01b0389169063ef693bed90610d9f9030908990600401612b0f565b600060405180830381600087803b158015610db957600080fd5b505af1158015610dcd573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610e0c57600080fd5b505af1158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e449190810190612707565b6001600160a01b0316632e1a7d4d866040518263ffffffff1660e01b8152600401610e6f9190612b3b565b600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050505050505050565b6040516345e6bdcd60e01b81526001600160a01b038516906345e6bdcd9061060f90869086908690600401612b64565b6040516305b1fdb160e11b81526001600160a01b03851690630b63fb629061060f90869086908690600401612bfc565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4757600080fd5b505afa158015610f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f7f9190810190612404565b90506000866001600160a01b0316632726b073856040518263ffffffff1660e01b8152600401610faf9190612b3b565b60206040518083038186803b158015610fc757600080fd5b505afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fff9190810190612404565b90506000876001600160a01b0316632c2cb9fd866040518263ffffffff1660e01b815260040161102f9190612b3b565b60206040518083038186803b15801561104757600080fd5b505afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061107f91908101906126e9565b90506000836001600160a01b0316632424be5c83856040518363ffffffff1660e01b81526004016110b1929190612b49565b604080518083038186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111009190810190612743565b915050611114878461021a87878888611eae565b600061112089876120b8565b905061113c8a8861113084612091565b60000385600003610eac565b6111488a8830846105df565b60405163ef693bed60e01b81526001600160a01b038a169063ef693bed906111769030908a90600401612b0f565b600060405180830381600087803b15801561119057600080fd5b505af11580156111a4573d6000803e3d6000fd5b5050505050505050505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156111ef57600080fd5b505af1158015611203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112279190810190612707565b6001600160a01b031663095ea7b384836040518363ffffffff1660e01b8152600401611254929190612b0f565b600060405180830381600087803b15801561126e57600080fd5b505af1158015611282573d6000803e3d6000fd5b5050604051633b4da69f60e01b81526001600160a01b0386169250633b4da69f91506106759085908590600401612b0f565b84840183016112c161223e565b6112cd83850185612725565b90506000816000015190506000816001600160a01b0316635ed75a2f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561131357600080fd5b505afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134b9190810190612404565b905060008360400151905060006113668386602001516108b9565b604080516002808252606080830184529394509091602083019080388339019050509050828160008151811061139857fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846001600160a01b031663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f157600080fd5b505afa158015611405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114299190810190612404565b8160018151811061143657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506060856001600160a01b031663bd020fbc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114c99190810190612404565b6001600160a01b031663c2998238836040518263ffffffff1660e01b81526004016114f49190612b2a565b600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261154a9190810190612696565b90508060008151811061155957fe5b60200260200101516000146115895760405162461bcd60e51b815260040161158090612bbc565b60405180910390fd5b8060018151811061159657fe5b60200260200101516000146115bd5760405162461bcd60e51b815260040161158090612bec565b6020870151604051632c2cb9fd60e01b8152644554482d4160d81b916001600160a01b03881691632c2cb9fd916115f691600401612b3b565b60206040518083038186803b15801561160e57600080fd5b505afa158015611622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061164691908101906126e9565b14156119115761173d85876001600160a01b0316638ec9f15f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561168957600080fd5b505afa15801561169d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116c19190810190612404565b886001600160a01b031663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fa57600080fd5b505afa15801561170e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117329190810190612404565b8a6020015187610b43565b856001600160a01b031663744d27126040518163ffffffff1660e01b815260040160206040518083038186803b15801561177657600080fd5b505afa15801561178a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117ae9190810190612404565b6001600160a01b0316631249c58b846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117e857600080fd5b505af11580156117fc573d6000803e3d6000fd5b5050505050856001600160a01b031663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b15801561183a57600080fd5b505afa15801561184e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118729190810190612404565b6001600160a01b031663c5ebeaec896040518263ffffffff1660e01b815260040161189d9190612b3b565b602060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118ef91908101906126e9565b1561190c5760405162461bcd60e51b815260040161158090612bac565b610e9d565b61199e858860600151886001600160a01b031663ac92d52b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561195357600080fd5b505afa158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061198b9190810190612404565b8a602001516101fa8c6060015189612143565b60006119ae8489608001516121d0565b9050846001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a219190810190612404565b6001600160a01b031663095ea7b386836040518363ffffffff1660e01b8152600401611a4e929190612b0f565b602060405180830381600087803b158015611a6857600080fd5b505af1158015611a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aa091908101906126cb565b5060405163140e25ad60e31b81526001600160a01b0386169063a0712d6890611acd908490600401612b3b565b602060405180830381600087803b158015611ae757600080fd5b505af1158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b1f91908101906126e9565b15611b3c5760405162461bcd60e51b815260040161158090612bcc565b866001600160a01b031663b29ced066040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7557600080fd5b505afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bad9190810190612404565b6001600160a01b031663c5ebeaec8a6040518263ffffffff1660e01b8152600401611bd89190612b3b565b602060405180830381600087803b158015611bf257600080fd5b505af1158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2a91908101906126e9565b156111a45760405162461bcd60e51b815260040161158090612bac565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8257600080fd5b505afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cba9190810190612707565b9050806001600160a01b031663f0217ce58360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d4f91908101906126e9565b846001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8857600080fd5b505afa158015611d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dc091908101906126e9565b6040518463ffffffff1660e01b815260040161067593929190612b64565b6000826001600160a01b031663bf7e214f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1957600080fd5b505afa158015611e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e519190810190612707565b9050806001600160a01b03166379d88d878360601b6bffffffffffffffffffffffff1916836001600160a01b031663a8542f666040518163ffffffff1660e01b815260040160206040518083038186803b158015611d1757600080fd5b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b8152600401611edd9190612b3b565b60a06040518083038186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f2d91908101906127f1565b5050509150506000866001600160a01b0316632424be5c85876040518363ffffffff1660e01b8152600401611f63929190612b49565b604080518083038186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fb29190810190612743565b9150506000876001600160a01b0316636c25b346886040518263ffffffff1660e01b8152600401611fe39190612abd565b60206040518083038186803b158015611ffb57600080fd5b505afa15801561200f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061203391908101906126e9565b9050600061204a61204484866121e4565b8361221b565b90506b033b2e3c9fd0803ce80000008104945080612074866b033b2e3c9fd0803ce80000006121e4565b1061207f5784612084565b846001015b9998505050505050505050565b8060008112156120b35760405162461bcd60e51b815260040161158090612bdc565b919050565b600061213c82846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156120f957600080fd5b505af115801561210d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061213191908101906126e9565b601203600a0a6121e4565b9392505050565b6000826001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561218057600080fd5b505af1158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121b891908101906126e9565b601203600a0a82816121c657fe5b0490505b92915050565b60008160ff16601203600a0a83816121c657fe5b60008115806121ff575050808202828282816121fc57fe5b04145b6121ca5760405162461bcd60e51b815260040161158090612b8c565b808203828111156121ca5760405162461bcd60e51b815260040161158090612b9c565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b80356121ca81612cf3565b80516121ca81612cf3565b600082601f83011261229357600080fd5b81516122a66122a182612c3e565b612c17565b915081818352602084019350602081019050838560208402820111156122cb57600080fd5b60005b838110156122f757816122e18882612317565b84525060209283019291909101906001016122ce565b5050505092915050565b80516121ca81612d0a565b80356121ca81612d13565b80516121ca81612d13565b60008083601f84011261233457600080fd5b50813567ffffffffffffffff81111561234c57600080fd5b60208301915083600182028301111561236457600080fd5b9250929050565b80516121ca81612d1c565b600060a0828403121561238857600080fd5b61239260a0612c17565b905060006123a0848461226c565b82525060206123b18484830161230c565b60208301525060406123c58482850161226c565b60408301525060606123d98482850161226c565b60608301525060806123ed848285016123f9565b60808301525092915050565b80356121ca81612d25565b60006020828403121561241657600080fd5b6000610b3b8484612277565b60008060008060008060a0878903121561243b57600080fd5b6000612447898961226c565b965050602061245889828a0161226c565b955050604061246989828a0161226c565b945050606061247a89828a0161230c565b935050608087013567ffffffffffffffff81111561249757600080fd5b6124a389828a01612322565b92509250509295509295509295565b600080600080600060a086880312156124ca57600080fd5b60006124d6888861226c565b95505060206124e78882890161226c565b94505060406124f88882890161226c565b93505060606125098882890161230c565b925050608061251a8882890161230c565b9150509295509295909350565b60008060006060848603121561253c57600080fd5b6000612548868661226c565b93505060206125598682870161226c565b925050604061256a8682870161230c565b9150509250925092565b60008060006060848603121561258957600080fd5b6000612595868661226c565b93505060206125a68682870161230c565b925050604061256a8682870161226c565b600080604083850312156125ca57600080fd5b60006125d6858561226c565b92505060206125e78582860161230c565b9150509250929050565b6000806000806080858703121561260757600080fd5b6000612613878761226c565b94505060206126248782880161230c565b93505060406126358782880161226c565b92505060606126468782880161230c565b91505092959194509250565b6000806000806080858703121561266857600080fd5b6000612674878761226c565b94505060206126858782880161230c565b93505060406126358782880161230c565b6000602082840312156126a857600080fd5b815167ffffffffffffffff8111156126bf57600080fd5b610b3b84828501612282565b6000602082840312156126dd57600080fd5b6000610b3b8484612301565b6000602082840312156126fb57600080fd5b6000610b3b8484612317565b60006020828403121561271957600080fd5b6000610b3b848461236b565b600060a0828403121561273757600080fd5b6000610b3b8484612376565b6000806040838503121561275657600080fd5b60006127628585612317565b92505060206125e785828601612317565b60008060008060006080868803121561278b57600080fd5b6000612797888861230c565b95505060206127a88882890161230c565b94505060406127b98882890161230c565b935050606086013567ffffffffffffffff8111156127d657600080fd5b6127e288828901612322565b92509250509295509295909350565b600080600080600060a0868803121561280957600080fd5b60006128158888612317565b955050602061282688828901612317565b945050604061283788828901612317565b935050606061284888828901612317565b925050608061251a88828901612317565b6000612865838361287c565b505060200190565b61287681612ca2565b82525050565b61287681612c72565b600061289082612c65565b61289a8185612c69565b93506128a583612c5f565b8060005b838110156128d35781516128bd8882612859565b97506128c883612c5f565b9250506001016128a9565b509495945050505050565b61287681612c82565b60006128f383856120b3565b9350612900838584612cad565b50500190565b600061291182612c65565b61291b8185612c69565b935061292b818560208601612cb9565b61293481612ce9565b9093019392505050565b600061294982612c65565b61295381856120b3565b9350612963818560208601612cb9565b9290920192915050565b600061297a600c83612c69565b6b6d756c2d6f766572666c6f7760a01b815260200192915050565b60006129a2600c83612c69565b6b7375622d6f766572666c6f7760a01b815260200192915050565b60006129ca600f83612c69565b6e19185a4b589bdc9c9bddcb59985a5b608a1b815260200192915050565b60006129f5601483612c69565b731b5adc8b595b9d195c8b59d95b4b59985a5b195960621b815260200192915050565b6000612a25600f83612c69565b6e19d95b4b5cdd5c1c1b1e4b59985a5b608a1b815260200192915050565b6000612a50600c83612c69565b6b696e742d6f766572666c6f7760a01b815260200192915050565b6000612a78601483612c69565b731b5adc8b595b9d195c8b59185a4b59985a5b195960621b815260200192915050565b6000612aa7828661293e565b9150612ab48284866128e7565b95945050505050565b602081016121ca828461287c565b60808101612ad9828761286d565b612ae6602083018661287c565b612af360408301856128de565b8181036060830152612b058184612906565b9695505050505050565b60408101612b1d828561287c565b61213c60208301846128de565b6020808252810161213c8184612885565b602081016121ca82846128de565b60408101612b5782856128de565b61213c602083018461287c565b60608101612b7282866128de565b612b7f60208301856128de565b610b3b60408301846128de565b602080825281016121ca8161296d565b602080825281016121ca81612995565b602080825281016121ca816129bd565b602080825281016121ca816129e8565b602080825281016121ca81612a18565b602080825281016121ca81612a43565b602080825281016121ca81612a6b565b60608101612c0a82866128de565b612b7f602083018561287c565b60405181810167ffffffffffffffff81118282101715612c3657600080fd5b604052919050565b600067ffffffffffffffff821115612c5557600080fd5b5060209081020190565b60200190565b5190565b90815260200190565b60006121ca82612c90565b151590565b90565b60006121ca82612c72565b6001600160a01b031690565b60ff1690565b60006121ca82612c85565b82818337506000910152565b60005b83811015612cd4578181015183820152602001612cbc565b83811115612ce3576000848401525b50505050565b601f01601f191690565b612cfc81612c72565b8114612d0757600080fd5b50565b612cfc81612c7d565b612cfc81612c82565b612cfc81612c85565b612cfc81612c9c56fea365627a7a723158202382211b20407aa7cc1454ef0da1b3e1da76eb668946419ee57a4525293c828b6c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "845:8070:28:-;;;938:24;8:9:-1;5:2;;;30:1;27;20:12;5:2;938:24:28;845:8070;;;;;;", - "deployedSourceMap": "845:8070:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7150:1763;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7150:1763:28;;;;;;;;;;;;;;;;:::i;:::-;;6211:166:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6211:166:22;;;;;;;;;;;;;;;;:::i;:::-;;5884:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5884:143:22;;;;;;;;;;;;;;;;:::i;:::-;;2153:360:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2153:360:28;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2519:455;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2519:455:28;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5707:171:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5707:171:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6554:1056;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6554:1056:22;;;;;;;;;;;;;;;;:::i;:::-;;6383:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6383:165:22;;;;;;;;;;;;;;;;:::i;:::-;;6033:172;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6033:172:22;;;;;;;;;;;;;;;;:::i;:::-;;7616:945;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7616:945:22;;;;;;;;;;;;;;;;:::i;:::-;;2663:409;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2663:409:22;;;;;;;;;;;;;;;;:::i;:::-;;3066:3151:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3066:3151:28;;;;;;;;;;;;;;;;:::i;:::-;;7150:1763;7431:31;7481:22;7431:73;;7567:18;7588:15;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7588:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7588:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7588:38:28;;;;;;;;;7567:59;;7657:12;7672:31;7685:10;7697:5;7672:12;:31::i;:::-;7657:46;;7854:53;7951:24;7940:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7940:36:28;;;7990:30;;7910:120;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7910:120:28;;;7854:176;;8085:24;8185:15;:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8185:55:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8185:55:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8185:55:28;;;;;;;;;8138:131;;;:133;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8138:133:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8138:133:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8138:133:28;;;;;;;;;8085:196;;8292:84;8301:15;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8301:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8301:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8301:38:28;;;;;;;;;8341:5;8348:24;8374:1;8292:8;:84::i;:::-;8386:56;8404:15;8429:11;8386:17;:56::i;:::-;8453:11;:21;;;8488:15;8517;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8517:28:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8517:28:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8517:28:28;;;;;;;;;8559:7;8580:40;8453:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8453:177:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8453:177:28;;;;8716:63;8721:15;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8721:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8721:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8721:38:28;;;;;;;;;8761:5;8776:1;8716:4;:63::i;:::-;8850:56;8868:15;8893:11;8850:17;:56::i;:::-;7150:1763;;;;;;;;;;;:::o;6211:166:22:-;6342:7;6330:25;;;6356:3;6361;6366;6330:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6330:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6330:40:22;;;;6211:166;;;;:::o;5884:143::-;5997:7;5985:25;;;6011:3;6016;5985:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5985:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5985:35:22;;;;5884:143;;;:::o;2153:360:28:-;2223:9;2248:11;2274:7;2262:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:26:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2262:26:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2262:26:28;;;;;;;;;2248:40;;2298:11;2324:7;2312:25;;;2338:3;2312:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2312:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2312:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2312:30:28;;;;;;;;;2298:44;;2352:11;2378:7;2366:25;;;2392:3;2366:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2366:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2366:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2366:30:28;;;;;;;;;2352:44;;2406:13;2434:7;2422:25;;;2448:3;2422:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2422:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2422:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2422:30:28;;;;;;;;;2406:46;;2470:36;2485:3;2490:5;2497:3;2502;2470:14;:36::i;:::-;2463:43;;2153:360;;;;;;;;:::o;2519:455::-;2617:8;2637:11;2663:7;2651:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2651:26:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2651:26:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2651:26:28;;;;;;;;;2637:40;;2687:11;2713:7;2701:25;;;2727:3;2701:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2701:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2701:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2701:30:28;;;;;;;;;2687:44;;2741:11;2767:7;2755:25;;;2781:3;2755:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2755:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2755:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2755:30:28;;;;;;;;;2741:44;;2948:3;2940:17;;;2958:3;2963;2940:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2940:27:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2940:27:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2940:27:28;;;;;;;;;2931:36;;;;;2519:455;;;;;;;:::o;5707:171:22:-;5810:8;5848:7;5836:25;;;5862:3;5867;5836:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5836:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5836:35:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5836:35:22;;;;;;;;;5830:41;;5707:171;;;;;:::o;6554:1056::-;6716:11;6742:7;6730:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6730:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6730:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6730:26:22;;;;;;;;;6716:40;;6766:11;6792:7;6780:25;;;6806:3;6780:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6780:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6780:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6780:30:22;;;;;;;;;6766:44;;6820:11;6846:7;6834:25;;;6860:3;6834:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6834:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6834:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6834:30:22;;;;;;;;;6820:44;;6877:8;6897:3;6889:17;;;6907:3;6912;6889:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6889:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6889:27:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6889:27:22;;;;;;;;;6874:42;;;6968:62;6981:7;6990:3;6995:34;7010:3;7015;7020;7025;6995:14;:34::i;:::-;6968:12;:62::i;:::-;7108:101;7126:7;7147:3;7165:11;7171:4;7165:5;:11::i;:::-;7164:12;;7195:3;7190:9;;7108:4;:101::i;:::-;7283:39;7288:7;7297:3;7310:4;7317;7283;:39::i;:::-;7401:7;7389:25;;;7423:4;7430;7389:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7389:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7389:46:22;;;;7489:7;7477:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7477:26:22;;;;;;;;;:35;;;7513:4;7477:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:41:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:41:22;;;;6554:1056;;;;;;;;;:::o;6383:165::-;6511:7;6499:25;;;6525:3;6530:4;6536;6499:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6499:42:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6499:42:22;;;;6383:165;;;;:::o;6033:172::-;6167:7;6155:29;;;6185:3;6190;6195:2;6155:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6155:43:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6155:43:22;;;;6033:172;;;;:::o;7616:945::-;7778:11;7804:7;7792:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7792:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7792:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7792:26:22;;;;;;;;;7778:40;;7828:11;7854:7;7842:25;;;7868:3;7842:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7842:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7842:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7842:30:22;;;;;;;;;7828:44;;7882:11;7908:7;7896:25;;;7922:3;7896:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7896:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7896:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7896:30:22;;;;;;;;;7882:44;;7939:8;7959:3;7951:17;;;7969:3;7974;7951:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7951:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7951:27:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7951:27:22;;;;;;;;;7936:42;;;8030:62;8043:7;8052:3;8057:34;8072:3;8077;8082;8087;8057:14;:34::i;:::-;8030:12;:62::i;:::-;8102:10;8115:26;8127:7;8136:4;8115:11;:26::i;:::-;8102:39;;8220:102;8238:7;8259:3;8277:12;8283:5;8277;:12::i;:::-;8276:13;;8308:3;8303:9;;8220:4;:102::i;:::-;8396:40;8401:7;8410:3;8423:4;8430:5;8396:4;:40::i;:::-;8520:7;8508:25;;;8542:4;8549;8508:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8508:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8508:46:22;;;;7616:945;;;;;;;;;;:::o;2663:409::-;2962:3;2950:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:22:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2950:22:22;;;;;;;;;:30;;;2981:3;2986;2950:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:40:22;;;;3046:3;3034:21;;;3056:3;3061;3034:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3034:31:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3034:31:22;;;;2663:409;;;:::o;3066:3151:28:-;3259:14;3297:12;3286:8;3276:7;:18;:33;3259:50;;3348:43;;:::i;:::-;3405:5;;3394:45;;;;;;;;;3348:91;;3483:31;3533:11;:34;;;3483:85;;3578:18;3599:15;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3599:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3599:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3599:38:28;;;;;;;;;3578:59;;3647:31;3681:11;:35;;;3647:69;;3770:17;3790:49;3809:10;3821:11;:17;;;3790:18;:49::i;:::-;3770:69;;3926:35;3978:1;3964:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;3964:16:28;;;;3926:54;;4014:23;3990:18;4009:1;3990:21;;;;;;;;;;;;;:47;;;;;;;;;;;4071:15;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4071:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4071:29:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4071:29:28;;;;;;;;;4047:18;4066:1;4047:21;;;;;;;;;;;;;:53;;;;;;;;;;;4111:31;4171:15;:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4171:44:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4171:44:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4171:44:28;;;;;;;;;4145:93;;;4239:18;4145:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4145:113:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4145:113:28;;;;;;39:16:-1;36:1;17:17;2:54;4145:113:28;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4145:113:28;;;;;;;;;4111:147;;4301:1;4277:17;4295:1;4277:20;;;;;;;;;;;;;;:25;4269:58;;;;;;;;;;;;;;;;;;;;;;4369:1;4345:17;4363:1;4345:20;;;;;;;;;;;;;;:25;4337:58;;;;;;;;;;;;;;;;;;;;;;4461:16;4422:10;4410:28;;;4439:11;:17;;;4410:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4410:47:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4410:47:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4410:47:28;;;;;;;;;:67;4406:1805;;;4493:224;4528:10;4556:15;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4556:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4556:32:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4556:32:28;;;;;;;;;4606:15;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4606:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4606:32:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4606:32:28;;;;;;;;;4656:11;:17;;;4691:12;4493:17;:224::i;:::-;4792:15;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4792:31:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4792:31:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4792:31:28;;;;;;;;;4784:45;;;4836:12;4784:67;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4784:67:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4784:67:28;;;;;4950:1;4898:15;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4898:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4898:29:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4898:29:28;;;;;;;;;4890:45;;;4936:9;4890:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4890:56:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4890:56:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4890:56:28;;;;;;;;;:61;4865:135;;;;;;;;;;;;;;;;;;;;;;4406:1805;;;5055:340;5090:10;5118:11;:33;;;5169:15;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5169:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5169:32:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5169:32:28;;;;;;;;;5219:11;:17;;;5254:127;5296:11;:33;;;5351:12;5254:20;:127::i;:::-;5055:17;:340::i;:::-;5471:23;5497:95;5534:12;5548:11;:30;;;5497:19;:95::i;:::-;5471:121;;5702:23;5694:43;;;:45;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5694:45:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5694:45:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5694:45:28;;;;;;;;;5687:78;;;5766:23;5791:18;5687:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5687:123:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5687:123:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5687:123:28;;;;;;;;;;6001:1;5910:23;5902:37;;;5961:18;5902:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5902:95:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5902:95:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5902:95:28;;;;;;;;;:100;5877:174;;;;;;;;;;;;;;;;;;;;;;6150:1;6098:15;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6098:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6098:29:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6098:29:28;;;;;;;;;6090:45;;;6136:9;6090:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6090:56:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6090:56:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6090:56:28;;;;;;;;;:61;6065:135;;;;;;;;;;;;;;;;;;;;;;4406:1805;;3066:3151;;;;;;;;;;;;;:::o;1211:293::-;1300:9;1329:12;1320:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1320:34:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1320:34:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1320:34:28;;;;;;;;;1300:55;;1374:1;1366:17;;;1421:3;1405:21;;1397:30;;;1449:1;1441:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1441:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1441:16:28;;;;;;;;;1479:1;1471:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1471:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1471:16:28;;;;;;;;;1366:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1366:131:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1366:131:28;;;;1211:293;;;:::o;1510:::-;1599:9;1628:12;1619:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1619:34:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1619:34:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1619:34:28;;;;;;;;;1599:55;;1673:1;1665:17;;;1720:3;1704:21;;1696:30;;;1748:1;1740:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1740:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1740:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1740:16:28;;;;;;;;;1778:1;1770:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1770:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1770:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1770:16:28;;;;;;;;;1665:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1665:131:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1665:131:28;;;;1510:293;;;:::o;5058:643:22:-;5195:8;5259:9;5283:3;5275:17;;;5293:3;5275:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5275:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5275:22:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5275:22:22;;;;;;;;;5256:41;;;;;;5354:8;5374:3;5366:17;;;5384:3;5389;5366:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5366:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5366:27:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5366:27:22;;;;;;;;;5351:42;;;5448:8;5467:3;5459:16;;;5476:3;5459:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5459:21:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5459:21:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5459:21:22;;;;;;;;;5448:32;;5491:8;5502:24;5506:14;5510:3;5515:4;5506:3;:14::i;:::-;5522:3;5502;:24::i;:::-;5491:35;;2458:8;5542:3;:9;;;;;;5536:15;;5675:3;5659:13;5663:3;2458:8;5659:3;:13::i;:::-;:19;:35;;5691:3;5659:35;;;5687:1;5681:3;:7;5659:35;5653:41;;5058:643;;;;;;;;;;:::o;3272:121::-;3318:5;3343:1;3335:10;;3368:1;3363;:6;;3355:31;;;;;;;;;;;;;;;;;;;;;;3272:121;;;:::o;3504:398::-;3573:11;3812:83;3829:3;3870:7;3858:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3858:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3858:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3858:26:22;;;;;;;;;3853:2;:31;3846:2;:39;3812:3;:83::i;:::-;3806:89;;3504:398;;;;:::o;1959:155:28:-;2037:4;2091:7;2079:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2079:26:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2079:26:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2079:26:28;;;;;;;;;2074:2;:31;2067:2;:39;2060:3;:47;;;;;;2053:54;;1959:155;;;;:::o;1809:144::-;1885:4;1935:8;1930:14;;1925:2;:19;1918:2;:27;1908:6;:38;;;;;;1901:45;;1809:144;;;;:::o;2500:132:22:-;2552:6;2583:1;2578;:6;:30;;;;2607:1;2602;2597;2593;:5;2589:9;;;2588:15;;;;;;:20;2578:30;2570:55;;;;;;;;;;;;;;;;;;;;;;2500:132;;;;:::o;3148:118::-;3200:6;3241:1;3235;3231;:5;3227:9;;;3226:16;;3218:41;;;;;;;;;;;;;;;;;;;;;;3148:118;;;;:::o;845:8070:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:146;;371:6;358:20;349:29;;383:41;418:5;383:41;;;343:86;;;;;454:722;;582:3;575:4;567:6;563:17;559:27;549:2;;600:1;597;590:12;549:2;630:6;624:13;652:80;667:64;724:6;667:64;;;652:80;;;643:89;;749:5;774:6;767:5;760:21;804:4;796:6;792:17;782:27;;826:4;821:3;817:14;810:21;;879:6;926:3;918:4;910:6;906:17;901:3;897:27;894:36;891:2;;;943:1;940;933:12;891:2;968:1;953:217;978:6;975:1;972:13;953:217;;;1036:3;1058:48;1102:3;1090:10;1058:48;;;1053:3;1046:61;1130:4;1125:3;1121:14;1114:21;;1158:4;1153:3;1149:14;1142:21;;1010:160;1000:1;997;993:9;988:14;;953:217;;;957:14;542:634;;;;;;;;1184:128;;1265:6;1259:13;1250:22;;1277:30;1301:5;1277:30;;;1244:68;;;;;1319:130;;1399:6;1386:20;1377:29;;1411:33;1438:5;1411:33;;;1371:78;;;;;1456:134;;1540:6;1534:13;1525:22;;1552:33;1579:5;1552:33;;;1519:71;;;;;1611:336;;;1725:3;1718:4;1710:6;1706:17;1702:27;1692:2;;1743:1;1740;1733:12;1692:2;1776:6;1763:20;1753:30;;1803:18;1795:6;1792:30;1789:2;;;1835:1;1832;1825:12;1789:2;1869:4;1861:6;1857:17;1845:29;;1920:3;1912:4;1904:6;1900:17;1890:8;1886:32;1883:41;1880:2;;;1937:1;1934;1927:12;1880:2;1685:262;;;;;;1955:174;;2059:6;2053:13;2044:22;;2071:53;2118:5;2071:53;;;2038:91;;;;;2136:166;;2236:6;2230:13;2221:22;;2248:49;2291:5;2248:49;;;2215:87;;;;;2309:128;;2388:6;2375:20;2366:29;;2400:32;2426:5;2400:32;;;2360:77;;;;;2500:980;;2627:4;2615:9;2610:3;2606:19;2602:30;2599:2;;;2645:1;2642;2635:12;2599:2;2663:20;2678:4;2663:20;;;2654:29;;2751:1;2783:49;2828:3;2819:6;2808:9;2804:22;2783:49;;;2776:4;2769:5;2765:16;2758:75;2693:151;2895:2;2928:49;2973:3;2964:6;2953:9;2949:22;2928:49;;;2921:4;2914:5;2910:16;2903:75;2854:135;3058:2;3091:49;3136:3;3127:6;3116:9;3112:22;3091:49;;;3084:4;3077:5;3073:16;3066:75;2999:153;3219:2;3252:49;3297:3;3288:6;3277:9;3273:22;3252:49;;;3245:4;3238:5;3234:16;3227:75;3162:151;3377:3;3411:47;3454:3;3445:6;3434:9;3430:22;3411:47;;;3404:4;3397:5;3393:16;3386:73;3323:147;2593:887;;;;;3487:130;;3567:6;3554:20;3545:29;;3579:33;3606:5;3579:33;;;3539:78;;;;;3624:134;;3708:6;3702:13;3693:22;;3720:33;3747:5;3720:33;;;3687:71;;;;;3765:126;;3843:6;3830:20;3821:29;;3855:31;3880:5;3855:31;;;3815:76;;;;;3898:263;;4013:2;4001:9;3992:7;3988:23;3984:32;3981:2;;;4029:1;4026;4019:12;3981:2;4064:1;4081:64;4137:7;4128:6;4117:9;4113:22;4081:64;;;4071:74;;4043:108;3975:186;;;;;4168:883;;;;;;;4367:3;4355:9;4346:7;4342:23;4338:33;4335:2;;;4384:1;4381;4374:12;4335:2;4419:1;4436:53;4481:7;4472:6;4461:9;4457:22;4436:53;;;4426:63;;4398:97;4526:2;4544:61;4597:7;4588:6;4577:9;4573:22;4544:61;;;4534:71;;4505:106;4642:2;4660:53;4705:7;4696:6;4685:9;4681:22;4660:53;;;4650:63;;4621:98;4750:2;4768:53;4813:7;4804:6;4793:9;4789:22;4768:53;;;4758:63;;4729:98;4886:3;4875:9;4871:19;4858:33;4911:18;4903:6;4900:30;4897:2;;;4943:1;4940;4933:12;4897:2;4971:64;5027:7;5018:6;5007:9;5003:22;4971:64;;;4961:74;;;;4837:204;4329:722;;;;;;;;;5058:743;;;;;;5230:3;5218:9;5209:7;5205:23;5201:33;5198:2;;;5247:1;5244;5237:12;5198:2;5282:1;5299:53;5344:7;5335:6;5324:9;5320:22;5299:53;;;5289:63;;5261:97;5389:2;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;;;5397:63;;5368:98;5497:2;5515:53;5560:7;5551:6;5540:9;5536:22;5515:53;;;5505:63;;5476:98;5605:2;5623:53;5668:7;5659:6;5648:9;5644:22;5623:53;;;5613:63;;5584:98;5713:3;5732:53;5777:7;5768:6;5757:9;5753:22;5732:53;;;5722:63;;5692:99;5192:609;;;;;;;;;5808:491;;;;5946:2;5934:9;5925:7;5921:23;5917:32;5914:2;;;5962:1;5959;5952:12;5914:2;5997:1;6014:53;6059:7;6050:6;6039:9;6035:22;6014:53;;;6004:63;;5976:97;6104:2;6122:53;6167:7;6158:6;6147:9;6143:22;6122:53;;;6112:63;;6083:98;6212:2;6230:53;6275:7;6266:6;6255:9;6251:22;6230:53;;;6220:63;;6191:98;5908:391;;;;;;6306:491;;;;6444:2;6432:9;6423:7;6419:23;6415:32;6412:2;;;6460:1;6457;6450:12;6412:2;6495:1;6512:53;6557:7;6548:6;6537:9;6533:22;6512:53;;;6502:63;;6474:97;6602:2;6620:53;6665:7;6656:6;6645:9;6641:22;6620:53;;;6610:63;;6581:98;6710:2;6728:53;6773:7;6764:6;6753:9;6749:22;6728:53;;;6718:63;;6689:98;6406:391;;;;;;6804:366;;;6925:2;6913:9;6904:7;6900:23;6896:32;6893:2;;;6941:1;6938;6931:12;6893:2;6976:1;6993:53;7038:7;7029:6;7018:9;7014:22;6993:53;;;6983:63;;6955:97;7083:2;7101:53;7146:7;7137:6;7126:9;7122:22;7101:53;;;7091:63;;7062:98;6887:283;;;;;;7177:491;;;;7315:2;7303:9;7294:7;7290:23;7286:32;7283:2;;;7331:1;7328;7321:12;7283:2;7366:1;7383:53;7428:7;7419:6;7408:9;7404:22;7383:53;;;7373:63;;7345:97;7473:2;7491:53;7536:7;7527:6;7516:9;7512:22;7491:53;;;7481:63;;7452:98;7581:2;7599:53;7644:7;7635:6;7624:9;7620:22;7599:53;;;7589:63;;7560:98;7277:391;;;;;;7675:617;;;;;7830:3;7818:9;7809:7;7805:23;7801:33;7798:2;;;7847:1;7844;7837:12;7798:2;7882:1;7899:53;7944:7;7935:6;7924:9;7920:22;7899:53;;;7889:63;;7861:97;7989:2;8007:53;8052:7;8043:6;8032:9;8028:22;8007:53;;;7997:63;;7968:98;8097:2;8115:53;8160:7;8151:6;8140:9;8136:22;8115:53;;;8105:63;;8076:98;8205:2;8223:53;8268:7;8259:6;8248:9;8244:22;8223:53;;;8213:63;;8184:98;7792:500;;;;;;;;8299:613;;;;;8452:3;8440:9;8431:7;8427:23;8423:33;8420:2;;;8469:1;8466;8459:12;8420:2;8504:1;8521:53;8566:7;8557:6;8546:9;8542:22;8521:53;;;8511:63;;8483:97;8611:2;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;;;8619:63;;8590:98;8719:2;8737:52;8781:7;8772:6;8761:9;8757:22;8737:52;;;8727:62;;8698:97;8826:2;8844:52;8888:7;8879:6;8868:9;8864:22;8844:52;;;8834:62;;8805:97;8414:498;;;;;;;;8919:392;;9059:2;9047:9;9038:7;9034:23;9030:32;9027:2;;;9075:1;9072;9065:12;9027:2;9131:1;9120:9;9116:17;9110:24;9154:18;9146:6;9143:30;9140:2;;;9186:1;9183;9176:12;9140:2;9206:89;9287:7;9278:6;9267:9;9263:22;9206:89;;;9196:99;;9089:212;9021:290;;;;;9318:257;;9430:2;9418:9;9409:7;9405:23;9401:32;9398:2;;;9446:1;9443;9436:12;9398:2;9481:1;9498:61;9551:7;9542:6;9531:9;9527:22;9498:61;;;9488:71;;9460:105;9392:183;;;;;9582:263;;9697:2;9685:9;9676:7;9672:23;9668:32;9665:2;;;9713:1;9710;9703:12;9665:2;9748:1;9765:64;9821:7;9812:6;9801:9;9797:22;9765:64;;;9755:74;;9727:108;9659:186;;;;;9852:303;;9987:2;9975:9;9966:7;9962:23;9958:32;9955:2;;;10003:1;10000;9993:12;9955:2;10038:1;10055:84;10131:7;10122:6;10111:9;10107:22;10055:84;;;10045:94;;10017:128;9949:206;;;;;10162:295;;10293:2;10281:9;10272:7;10268:23;10264:32;10261:2;;;10309:1;10306;10299:12;10261:2;10344:1;10361:80;10433:7;10424:6;10413:9;10409:22;10361:80;;;10351:90;;10323:124;10255:202;;;;;10464:318;;10606:3;10594:9;10585:7;10581:23;10577:33;10574:2;;;10623:1;10620;10613:12;10574:2;10658:1;10675:91;10758:7;10749:6;10738:9;10734:22;10675:91;;;10665:101;;10637:135;10568:214;;;;;10789:263;;10904:2;10892:9;10883:7;10879:23;10875:32;10872:2;;;10920:1;10917;10910:12;10872:2;10955:1;10972:64;11028:7;11019:6;11008:9;11004:22;10972:64;;;10962:74;;10934:108;10866:186;;;;;11059:399;;;11191:2;11179:9;11170:7;11166:23;11162:32;11159:2;;;11207:1;11204;11197:12;11159:2;11242:1;11259:64;11315:7;11306:6;11295:9;11291:22;11259:64;;;11249:74;;11221:108;11360:2;11378:64;11434:7;11425:6;11414:9;11410:22;11378:64;;;11368:74;;11339:109;11153:305;;;;;;11465:741;;;;;;11639:3;11627:9;11618:7;11614:23;11610:33;11607:2;;;11656:1;11653;11646:12;11607:2;11691:1;11708:53;11753:7;11744:6;11733:9;11729:22;11708:53;;;11698:63;;11670:97;11798:2;11816:53;11861:7;11852:6;11841:9;11837:22;11816:53;;;11806:63;;11777:98;11906:2;11924:53;11969:7;11960:6;11949:9;11945:22;11924:53;;;11914:63;;11885:98;12042:2;12031:9;12027:18;12014:32;12066:18;12058:6;12055:30;12052:2;;;12098:1;12095;12088:12;12052:2;12126:64;12182:7;12173:6;12162:9;12158:22;12126:64;;;12116:74;;;;11993:203;11601:605;;;;;;;;;12213:809;;;;;;12396:3;12384:9;12375:7;12371:23;12367:33;12364:2;;;12413:1;12410;12403:12;12364:2;12448:1;12465:64;12521:7;12512:6;12501:9;12497:22;12465:64;;;12455:74;;12427:108;12566:2;12584:64;12640:7;12631:6;12620:9;12616:22;12584:64;;;12574:74;;12545:109;12685:2;12703:64;12759:7;12750:6;12739:9;12735:22;12703:64;;;12693:74;;12664:109;12804:2;12822:64;12878:7;12869:6;12858:9;12854:22;12822:64;;;12812:74;;12783:109;12923:3;12942:64;12998:7;12989:6;12978:9;12974:22;12942:64;;;12932:74;;12902:110;12358:664;;;;;;;;;13030:173;;13117:46;13159:3;13151:6;13117:46;;;13192:4;13187:3;13183:14;13169:28;;13110:93;;;;;13211:142;13302:45;13341:5;13302:45;;;13297:3;13290:58;13284:69;;;13360:103;13433:24;13451:5;13433:24;;;13428:3;13421:37;13415:48;;;13470:113;13553:24;13571:5;13553:24;;;13548:3;13541:37;13535:48;;;13621:690;;13766:54;13814:5;13766:54;;;13833:86;13912:6;13907:3;13833:86;;;13826:93;;13940:56;13990:5;13940:56;;;14016:7;14044:1;14029:260;14054:6;14051:1;14048:13;14029:260;;;14121:6;14115:13;14142:63;14201:3;14186:13;14142:63;;;14135:70;;14222:60;14275:6;14222:60;;;14212:70;;14086:203;14076:1;14073;14069:9;14064:14;;14029:260;;;14033:14;14302:3;14295:10;;13745:566;;;;;;;;14319:113;14402:24;14420:5;14402:24;;;14397:3;14390:37;14384:48;;;14462:310;;14594:88;14675:6;14670:3;14594:88;;;14587:95;;14694:43;14730:6;14725:3;14718:5;14694:43;;;14759:6;14754:3;14750:16;14743:23;;14580:192;;;;;;14780:343;;14890:38;14922:5;14890:38;;;14940:70;15003:6;14998:3;14940:70;;;14933:77;;15015:52;15060:6;15055:3;15048:4;15041:5;15037:16;15015:52;;;15088:29;15110:6;15088:29;;;15083:3;15079:39;15072:46;;14870:253;;;;;;15130:356;;15258:38;15290:5;15258:38;;;15308:88;15389:6;15384:3;15308:88;;;15301:95;;15401:52;15446:6;15441:3;15434:4;15427:5;15423:16;15401:52;;;15474:6;15469:3;15465:16;15458:23;;15238:248;;;;;;15493:110;15574:23;15591:5;15574:23;;;15569:3;15562:36;15556:47;;;15611:312;;15771:67;15835:2;15830:3;15771:67;;;15764:74;;15871:14;15867:1;15862:3;15858:11;15851:35;15914:2;15909:3;15905:12;15898:19;;15757:166;;;;15932:312;;16092:67;16156:2;16151:3;16092:67;;;16085:74;;16192:14;16188:1;16183:3;16179:11;16172:35;16235:2;16230:3;16226:12;16219:19;;16078:166;;;;16253:315;;16413:67;16477:2;16472:3;16413:67;;;16406:74;;16513:17;16509:1;16504:3;16500:11;16493:38;16559:2;16554:3;16550:12;16543:19;;16399:169;;;;16577:320;;16737:67;16801:2;16796:3;16737:67;;;16730:74;;16837:22;16833:1;16828:3;16824:11;16817:43;16888:2;16883:3;16879:12;16872:19;;16723:174;;;;16906:315;;17066:67;17130:2;17125:3;17066:67;;;17059:74;;17166:17;17162:1;17157:3;17153:11;17146:38;17212:2;17207:3;17203:12;17196:19;;17052:169;;;;17230:312;;17390:67;17454:2;17449:3;17390:67;;;17383:74;;17490:14;17486:1;17481:3;17477:11;17470:35;17533:2;17528:3;17524:12;17517:19;;17376:166;;;;17551:320;;17711:67;17775:2;17770:3;17711:67;;;17704:74;;17811:22;17807:1;17802:3;17798:11;17791:43;17862:2;17857:3;17853:12;17846:19;;17697:174;;;;17879:113;17962:24;17980:5;17962:24;;;17957:3;17950:37;17944:48;;;17999:439;;18199:93;18288:3;18279:6;18199:93;;;18192:100;;18310:103;18409:3;18400:6;18392;18310:103;;;18303:110;;18430:3;18423:10;;18180:258;;;;;;;18445:213;;18563:2;18552:9;18548:18;18540:26;;18577:71;18645:1;18634:9;18630:17;18621:6;18577:71;;;18534:124;;;;;18665:647;;18893:3;18882:9;18878:19;18870:27;;18908:79;18984:1;18973:9;18969:17;18960:6;18908:79;;;18998:72;19066:2;19055:9;19051:18;19042:6;18998:72;;;19081;19149:2;19138:9;19134:18;19125:6;19081:72;;;19201:9;19195:4;19191:20;19186:2;19175:9;19171:18;19164:48;19226:76;19297:4;19288:6;19226:76;;;19218:84;;18864:448;;;;;;;;19319:324;;19465:2;19454:9;19450:18;19442:26;;19479:71;19547:1;19536:9;19532:17;19523:6;19479:71;;;19561:72;19629:2;19618:9;19614:18;19605:6;19561:72;;;19436:207;;;;;;19650:361;;19818:2;19807:9;19803:18;19795:26;;19868:9;19862:4;19858:20;19854:1;19843:9;19839:17;19832:47;19893:108;19996:4;19987:6;19893:108;;;19885:116;;19789:222;;;;;20018:213;;20136:2;20125:9;20121:18;20113:26;;20150:71;20218:1;20207:9;20203:17;20194:6;20150:71;;;20107:124;;;;;20238:324;;20384:2;20373:9;20369:18;20361:26;;20398:71;20466:1;20455:9;20451:17;20442:6;20398:71;;;20480:72;20548:2;20537:9;20533:18;20524:6;20480:72;;;20355:207;;;;;;20569:435;;20743:2;20732:9;20728:18;20720:26;;20757:71;20825:1;20814:9;20810:17;20801:6;20757:71;;;20839:72;20907:2;20896:9;20892:18;20883:6;20839:72;;;20922;20990:2;20979:9;20975:18;20966:6;20922:72;;;20714:290;;;;;;;21011:407;;21202:2;21191:9;21187:18;21179:26;;21252:9;21246:4;21242:20;21238:1;21227:9;21223:17;21216:47;21277:131;21403:4;21277:131;;;21269:139;;21173:245;;;;21425:407;;21616:2;21605:9;21601:18;21593:26;;21666:9;21660:4;21656:20;21652:1;21641:9;21637:17;21630:47;21691:131;21817:4;21691:131;;;21683:139;;21587:245;;;;21839:407;;22030:2;22019:9;22015:18;22007:26;;22080:9;22074:4;22070:20;22066:1;22055:9;22051:17;22044:47;22105:131;22231:4;22105:131;;;22097:139;;22001:245;;;;22253:407;;22444:2;22433:9;22429:18;22421:26;;22494:9;22488:4;22484:20;22480:1;22469:9;22465:17;22458:47;22519:131;22645:4;22519:131;;;22511:139;;22415:245;;;;22667:407;;22858:2;22847:9;22843:18;22835:26;;22908:9;22902:4;22898:20;22894:1;22883:9;22879:17;22872:47;22933:131;23059:4;22933:131;;;22925:139;;22829:245;;;;23081:407;;23272:2;23261:9;23257:18;23249:26;;23322:9;23316:4;23312:20;23308:1;23297:9;23293:17;23286:47;23347:131;23473:4;23347:131;;;23339:139;;23243:245;;;;23495:407;;23686:2;23675:9;23671:18;23663:26;;23736:9;23730:4;23726:20;23722:1;23711:9;23707:17;23700:47;23761:131;23887:4;23761:131;;;23753:139;;23657:245;;;;23909:213;;24027:2;24016:9;24012:18;24004:26;;24041:71;24109:1;24098:9;24094:17;24085:6;24041:71;;;23998:124;;;;;24129:324;;24275:2;24264:9;24260:18;24252:26;;24289:71;24357:1;24346:9;24342:17;24333:6;24289:71;;;24371:72;24439:2;24428:9;24424:18;24415:6;24371:72;;;24246:207;;;;;;24460:435;;24634:2;24623:9;24619:18;24611:26;;24648:71;24716:1;24705:9;24701:17;24692:6;24648:71;;;24730:72;24798:2;24787:9;24783:18;24774:6;24730:72;;;24813;24881:2;24870:9;24866:18;24857:6;24813:72;;;24605:290;;;;;;;24902:427;;25072:2;25061:9;25057:18;25049:26;;25086:71;25154:1;25143:9;25139:17;25130:6;25086:71;;;25168:70;25234:2;25223:9;25219:18;25210:6;25168:70;;;25249;25315:2;25304:9;25300:18;25291:6;25249:70;;;25043:286;;;;;;;25336:256;;25398:2;25392:9;25382:19;;25436:4;25428:6;25424:17;25535:6;25523:10;25520:22;25499:18;25487:10;25484:34;25481:62;25478:2;;;25556:1;25553;25546:12;25478:2;25576:10;25572:2;25565:22;25376:216;;;;;25599:304;;25758:18;25750:6;25747:30;25744:2;;;25790:1;25787;25780:12;25744:2;25825:4;25817:6;25813:17;25805:25;;25888:4;25882;25878:15;25870:23;;25681:222;;;;25910:151;;25996:3;25988:11;;26034:4;26029:3;26025:14;26017:22;;25982:79;;;;26068:137;;26177:5;26171:12;26161:22;;26142:63;;;;26212:121;;26305:5;26299:12;26289:22;;26270:63;;;;26340:108;;26438:4;26433:3;26429:14;26421:22;;26415:33;;;;26456:178;;26586:6;26581:3;26574:19;26623:4;26618:3;26614:14;26599:29;;26567:67;;;;;26643:162;;26757:6;26752:3;26745:19;26794:4;26789:3;26785:14;26770:29;;26738:67;;;;;26814:144;;26949:3;26934:18;;26927:31;;;;;26967:163;;27082:6;27077:3;27070:19;27119:4;27114:3;27110:14;27095:29;;27063:67;;;;;27138:91;;27200:24;27218:5;27200:24;;;27189:35;;27183:46;;;;27236:99;;27306:24;27324:5;27306:24;;;27295:35;;27289:46;;;;27342:85;;27415:5;27408:13;27401:21;27390:32;;27384:43;;;;27434:72;;27496:5;27485:16;;27479:27;;;;27513:111;;27595:24;27613:5;27595:24;;;27584:35;;27578:46;;;;27631:107;;27709:24;27727:5;27709:24;;;27698:35;;27692:46;;;;27745:71;;27806:5;27795:16;;27789:27;;;;27823:121;;27896:42;27889:5;27885:54;27874:65;;27868:76;;;;27951:72;;28013:5;28002:16;;27996:27;;;;28030:81;;28101:4;28094:5;28090:16;28079:27;;28073:38;;;;28118:129;;28205:37;28236:5;28205:37;;;28192:50;;28186:61;;;;28254:121;;28333:37;28364:5;28333:37;;;28320:50;;28314:61;;;;28382:108;;28461:24;28479:5;28461:24;;;28448:37;;28442:48;;;;28498:145;28579:6;28574:3;28569;28556:30;28635:1;28626:6;28621:3;28617:16;28610:27;28549:94;;;;28652:268;28717:1;28724:101;28738:6;28735:1;28732:13;28724:101;;;28814:1;28809:3;28805:11;28799:18;28795:1;28790:3;28786:11;28779:39;28760:2;28757:1;28753:10;28748:15;;28724:101;;;28840:6;28837:1;28834:13;28831:2;;;28905:1;28896:6;28891:3;28887:16;28880:27;28831:2;28701:219;;;;;28928:97;;29016:2;29012:7;29007:2;29000:5;28996:14;28992:28;28982:38;;28976:49;;;;29033:117;29102:24;29120:5;29102:24;;;29095:5;29092:35;29082:2;;29141:1;29138;29131:12;29082:2;29076:74;;29157:133;29234:32;29260:5;29234:32;;;29227:5;29224:43;29214:2;;29281:1;29278;29271:12;29214:2;29208:82;;29297:111;29363:21;29378:5;29363:21;;;29356:5;29353:32;29343:2;;29399:1;29396;29389:12;29343:2;29337:71;;29415:117;29484:24;29502:5;29484:24;;;29477:5;29474:35;29464:2;;29523:1;29520;29513:12;29464:2;29458:74;;29539:157;29628:44;29666:5;29628:44;;;29621:5;29618:55;29608:2;;29687:1;29684;29677:12;29608:2;29602:94;;29703:149;29788:40;29822:5;29788:40;;;29781:5;29778:51;29768:2;;29843:1;29840;29833:12;29768:2;29762:90;;29859:115;29927:23;29944:5;29927:23;;;29920:5;29917:34;29907:2;;29965:1;29962;29955:12;29907:2;29901:73;;29981:117;30050:24;30068:5;30050:24;;;30043:5;30040:35;30030:2;;30089:1;30086;30079:12;30030:2;30024:74;;30105:113;30172:22;30188:5;30172:22;;;30165:5;30162:33;30152:2;;30209:1;30206;30199:12;30152:2;30146:72;", + "deployedSourceMap": "845:8070:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7150:1763;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7150:1763:28;;;;;;;;:::i;6211:166:22:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6211:166:22;;;;;;;;:::i;5884:143::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5884:143:22;;;;;;;;:::i;2153:360:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2153:360:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2519:455;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2519:455:28;;;;;;;;:::i;5707:171:22:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5707:171:22;;;;;;;;:::i;6554:1056::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6554:1056:22;;;;;;;;:::i;6383:165::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6383:165:22;;;;;;;;:::i;6033:172::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6033:172:22;;;;;;;;:::i;7616:945::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7616:945:22;;;;;;;;:::i;2663:409::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2663:409:22;;;;;;;;:::i;3066:3151:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3066:3151:28;;;;;;;;:::i;7150:1763::-;7431:31;7481:22;7431:73;;7567:18;7588:15;-1:-1:-1;;;;;7588:36:28;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7588:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7588:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7588:38:28;;;;;;;;;7567:59;;7657:12;7672:31;7685:10;7697:5;7672:12;:31::i;:::-;7657:46;;7854:53;7951:24;7940:36;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;7940:36:28;;;;7910:120;;7990:30;;;;49:4:-1;7910:120:28;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7910:120:28;;;7854:176;;8085:24;8185:15;-1:-1:-1;;;;;8185:53:28;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8185:55:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8185:55:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8185:55:28;;;;;;;;;-1:-1:-1;;;;;8138:131:28;;:133;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8138:133:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8138:133:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8138:133:28;;;;;;;;;8085:196;;8292:84;8301:15;-1:-1:-1;;;;;8301:36:28;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8301:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8301:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8301:38:28;;;;;;;;;8341:5;8348:24;8374:1;8292:8;:84::i;:::-;8386:56;8404:15;8429:11;8386:17;:56::i;:::-;8453:11;-1:-1:-1;;;;;8453:21:28;;8488:15;8517;-1:-1:-1;;;;;8517:26:28;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8517:28:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8517:28:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8517:28:28;;;;;;;;;8559:7;8580:40;8453:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8453:177:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8453:177:28;;;;8716:63;8721:15;-1:-1:-1;;;;;8721:36:28;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8721:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8721:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8721:38:28;;;;;;;;;8761:5;8776:1;8716:4;:63::i;:::-;8850:56;8868:15;8893:11;8850:17;:56::i;:::-;7150:1763;;;;;;;;;;;:::o;6211:166:22:-;6330:40;;-1:-1:-1;;;6330:40:22;;-1:-1:-1;;;;;6330:25:22;;;;;:40;;6356:3;;6361;;6366;;6330:40;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6330:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6330:40:22;;;;6211:166;;;;:::o;5884:143::-;5985:35;;-1:-1:-1;;;5985:35:22;;-1:-1:-1;;;;;5985:25:22;;;;;:35;;6011:3;;6016;;5985:35;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5985:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5985:35:22;;;;5884:143;;;:::o;2153:360:28:-;2223:9;2248:11;2274:7;-1:-1:-1;;;;;2262:24:28;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:26:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2262:26:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2262:26:28;;;;;;;;;2248:40;;2298:11;2324:7;-1:-1:-1;;;;;2312:25:28;;2338:3;2312:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2312:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2312:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2312:30:28;;;;;;;;;2298:44;;2352:11;2378:7;-1:-1:-1;;;;;2366:25:28;;2392:3;2366:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2366:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2366:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2366:30:28;;;;;;;;;2352:44;;2406:13;2434:7;-1:-1:-1;;;;;2422:25:28;;2448:3;2422:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2422:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2422:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2422:30:28;;;;;;;;;2406:46;;2470:36;2485:3;2490:5;2497:3;2502;2470:14;:36::i;:::-;2463:43;2153:360;-1:-1:-1;;;;;;;2153:360:28:o;2519:455::-;2617:8;2637:11;2663:7;-1:-1:-1;;;;;2651:24:28;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2651:26:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2651:26:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2651:26:28;;;;;;;;;2637:40;;2687:11;2713:7;-1:-1:-1;;;;;2701:25:28;;2727:3;2701:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2701:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2701:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2701:30:28;;;;;;;;;2687:44;;2741:11;2767:7;-1:-1:-1;;;;;2755:25:28;;2781:3;2755:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2755:30:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2755:30:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2755:30:28;;;;;;;;;2940:27;;-1:-1:-1;;;2940:27:28;;2741:44;;-1:-1:-1;;;;;;2940:17:28;;;;;:27;;2741:44;;2963:3;;2940:27;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2940:27:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2940:27:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2940:27:28;;;;;;;;;-1:-1:-1;2931:36:28;2519:455;-1:-1:-1;;;;;;2519:455:28:o;5707:171:22:-;5836:35;;-1:-1:-1;;;5836:35:22;;5810:8;;-1:-1:-1;;;;;5836:25:22;;;;;:35;;5862:3;;5867;;5836:35;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5836:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5836:35:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5836:35:22;;;;;;;;;5830:41;5707:171;-1:-1:-1;;;;5707:171:22:o;6554:1056::-;6716:11;6742:7;-1:-1:-1;;;;;6730:24:22;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6730:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6730:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6730:26:22;;;;;;;;;6716:40;;6766:11;6792:7;-1:-1:-1;;;;;6780:25:22;;6806:3;6780:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6780:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6780:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6780:30:22;;;;;;;;;6766:44;;6820:11;6846:7;-1:-1:-1;;;;;6834:25:22;;6860:3;6834:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6834:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6834:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6834:30:22;;;;;;;;;6820:44;;6877:8;6897:3;-1:-1:-1;;;;;6889:17:22;;6907:3;6912;6889:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6889:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6889:27:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6889:27:22;;;;;;;;;6874:42;;;6968:62;6981:7;6990:3;6995:34;7010:3;7015;7020;7025;6995:14;:34::i;6968:62::-;7108:101;7126:7;7147:3;7165:11;7171:4;7165:5;:11::i;:::-;7164:12;;7195:3;7190:9;;7108:4;:101::i;:::-;7283:39;7288:7;7297:3;7310:4;7317;7283;:39::i;:::-;7389:46;;-1:-1:-1;;;7389:46:22;;-1:-1:-1;;;;;7389:25:22;;;;;:46;;7423:4;;7430;;7389:46;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7389:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7389:46:22;;;;7489:7;-1:-1:-1;;;;;7477:24:22;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7477:26:22;;;;;;;;;-1:-1:-1;;;;;7477:35:22;;7513:4;7477:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:41:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:41:22;;;;6554:1056;;;;;;;;;:::o;6383:165::-;6499:42;;-1:-1:-1;;;6499:42:22;;-1:-1:-1;;;;;6499:25:22;;;;;:42;;6525:3;;6530:4;;6536;;6499:42;;;;6033:172;6155:43;;-1:-1:-1;;;6155:43:22;;-1:-1:-1;;;;;6155:29:22;;;;;:43;;6185:3;;6190;;6195:2;;6155:43;;;;7616:945;7778:11;7804:7;-1:-1:-1;;;;;7792:24:22;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7792:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7792:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7792:26:22;;;;;;;;;7778:40;;7828:11;7854:7;-1:-1:-1;;;;;7842:25:22;;7868:3;7842:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7842:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7842:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7842:30:22;;;;;;;;;7828:44;;7882:11;7908:7;-1:-1:-1;;;;;7896:25:22;;7922:3;7896:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7896:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7896:30:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7896:30:22;;;;;;;;;7882:44;;7939:8;7959:3;-1:-1:-1;;;;;7951:17:22;;7969:3;7974;7951:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7951:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7951:27:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7951:27:22;;;;;;;;;7936:42;;;8030:62;8043:7;8052:3;8057:34;8072:3;8077;8082;8087;8057:14;:34::i;8030:62::-;8102:10;8115:26;8127:7;8136:4;8115:11;:26::i;:::-;8102:39;;8220:102;8238:7;8259:3;8277:12;8283:5;8277;:12::i;:::-;8276:13;;8308:3;8303:9;;8220:4;:102::i;:::-;8396:40;8401:7;8410:3;8423:4;8430:5;8396:4;:40::i;:::-;8508:46;;-1:-1:-1;;;8508:46:22;;-1:-1:-1;;;;;8508:25:22;;;;;:46;;8542:4;;8549;;8508:46;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8508:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8508:46:22;;;;7616:945;;;;;;;;;;:::o;2663:409::-;2962:3;-1:-1:-1;;;;;2950:20:22;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:22:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2950:22:22;;;;;;;;;-1:-1:-1;;;;;2950:30:22;;2981:3;2986;2950:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3034:31:22;;-1:-1:-1;;;3034:31:22;;-1:-1:-1;;;;;3034:21:22;;;-1:-1:-1;3034:21:22;;-1:-1:-1;3034:31:22;;3056:3;;3061;;3034:31;;;;3066:3151:28;3276:18;;;:33;;3348:43;;:::i;:::-;3394:45;;;;3405:5;3394:45;;;3348:91;;3483:31;3533:11;:34;;;3483:85;;3578:18;3599:15;-1:-1:-1;;;;;3599:36:28;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3599:38:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3599:38:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3599:38:28;;;;;;;;;3578:59;;3647:31;3681:11;:35;;;3647:69;;3770:17;3790:49;3809:10;3821:11;:17;;;3790:18;:49::i;:::-;3964:16;;;3978:1;3964:16;;;3926:35;3964:16;;;;;3770:69;;-1:-1:-1;3964:16:28;;;;;;;105:10:-1;3964:16:28;88:34:-1;136:17;;-1:-1;3964:16:28;3926:54;;4014:23;3990:18;4009:1;3990:21;;;;;;;;;;;;;:47;-1:-1:-1;;;;;3990:47:28;;;-1:-1:-1;;;;;3990:47:28;;;;;4071:15;-1:-1:-1;;;;;4071:27:28;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4071:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4071:29:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4071:29:28;;;;;;;;;4047:18;4066:1;4047:21;;;;;;;;;;;;;:53;-1:-1:-1;;;;;4047:53:28;;;-1:-1:-1;;;;;4047:53:28;;;;;4111:31;4171:15;-1:-1:-1;;;;;4171:42:28;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4171:44:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4171:44:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4171:44:28;;;;;;;;;-1:-1:-1;;;;;4145:93:28;;4239:18;4145:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4145:113:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4145:113:28;;;;;;39:16:-1;36:1;17:17;2:54;101:4;4145:113:28;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;4145:113:28;;;;;;;;;4111:147;;4277:17;4295:1;4277:20;;;;;;;;;;;;;;4301:1;4277:25;4269:58;;;;-1:-1:-1;;;4269:58:28;;;;;;;;;;;;;;;;;4345:17;4363:1;4345:20;;;;;;;;;;;;;;4369:1;4345:25;4337:58;;;;-1:-1:-1;;;4337:58:28;;;;;;;;;4439:17;;;;4410:47;;-1:-1:-1;;;4410:47:28;;-1:-1:-1;;;4461:16:28;-1:-1:-1;;;;;4410:28:28;;;;;:47;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4410:47:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4410:47:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4410:47:28;;;;;;;;;:67;4406:1805;;;4493:224;4528:10;4556:15;-1:-1:-1;;;;;4556:30:28;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4556:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4556:32:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4556:32:28;;;;;;;;;4606:15;-1:-1:-1;;;;;4606:30:28;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4606:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4606:32:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4606:32:28;;;;;;;;;4656:11;:17;;;4691:12;4493:17;:224::i;:::-;4792:15;-1:-1:-1;;;;;4792:29:28;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4792:31:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4792:31:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4792:31:28;;;;;;;;;-1:-1:-1;;;;;4784:45:28;;4836:12;4784:67;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4784:67:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4784:67:28;;;;;4898:15;-1:-1:-1;;;;;4898:27:28;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4898:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4898:29:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4898:29:28;;;;;;;;;-1:-1:-1;;;;;4890:45:28;;4936:9;4890:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4890:56:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4890:56:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4890:56:28;;;;;;;;;:61;4865:135;;;;-1:-1:-1;;;4865:135:28;;;;;;;;;4406:1805;;;5055:340;5090:10;5118:11;:33;;;5169:15;-1:-1:-1;;;;;5169:30:28;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5169:32:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5169:32:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5169:32:28;;;;;;;;;5219:11;:17;;;5254:127;5296:11;:33;;;5351:12;5254:20;:127::i;5055:340::-;5471:23;5497:95;5534:12;5548:11;:30;;;5497:19;:95::i;:::-;5471:121;;5702:23;-1:-1:-1;;;;;5694:43:28;;:45;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5694:45:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5694:45:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5694:45:28;;;;;;;;;-1:-1:-1;;;;;5687:78:28;;5766:23;5791:18;5687:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5687:123:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5687:123:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5687:123:28;;;;;;;;;-1:-1:-1;5902:95:28;;-1:-1:-1;;;5902:95:28;;-1:-1:-1;;;;;5902:37:28;;;;;:95;;5961:18;;5902:95;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5902:95:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5902:95:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5902:95:28;;;;;;;;;:100;5877:174;;;;-1:-1:-1;;;5877:174:28;;;;;;;;;6098:15;-1:-1:-1;;;;;6098:27:28;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6098:29:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6098:29:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6098:29:28;;;;;;;;;-1:-1:-1;;;;;6090:45:28;;6136:9;6090:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6090:56:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6090:56:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6090:56:28;;;;;;;;;:61;6065:135;;;;-1:-1:-1;;;6065:135:28;;;;;;;;1211:293;1300:9;1329:12;-1:-1:-1;;;;;1320:32:28;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1320:34:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1320:34:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1320:34:28;;;;;;;;;1300:55;;1374:1;-1:-1:-1;;;;;1366:17:28;;1421:3;1405:21;;1397:30;;;1449:1;-1:-1:-1;;;;;1441:14:28;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1441:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1441:16:28;;;;;;;;;1479:1;-1:-1:-1;;;;;1471:14:28;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:16:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1471:16:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1471:16:28;;;;;;;;;1366:131;;;;;;;;;;;;;;;;;;1510:293;1599:9;1628:12;-1:-1:-1;;;;;1619:32:28;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1619:34:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1619:34:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1619:34:28;;;;;;;;;1599:55;;1673:1;-1:-1:-1;;;;;1665:17:28;;1720:3;1704:21;;1696:30;;;1748:1;-1:-1:-1;;;;;1740:14:28;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5058:643:22;5195:8;5259:9;5283:3;-1:-1:-1;;;;;5275:17:22;;5293:3;5275:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5275:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5275:22:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5275:22:22;;;;;;;;;5256:41;;;;;;5354:8;5374:3;-1:-1:-1;;;;;5366:17:22;;5384:3;5389;5366:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5366:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5366:27:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5366:27:22;;;;;;;;;5351:42;;;5448:8;5467:3;-1:-1:-1;;;;;5459:16:22;;5476:3;5459:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5459:21:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5459:21:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5459:21:22;;;;;;;;;5448:32;;5491:8;5502:24;5506:14;5510:3;5515:4;5506:3;:14::i;:::-;5522:3;5502;:24::i;:::-;5491:35;-1:-1:-1;2458:8:22;5491:35;5542:9;5536:15;;5675:3;5659:13;5663:3;2458:8;5659:3;:13::i;:::-;:19;:35;;5691:3;5659:35;;;5681:3;5687:1;5681:7;5659:35;5653:41;5058:643;-1:-1:-1;;;;;;;;;5058:643:22:o;3272:121::-;3343:1;3318:5;3363:6;;;3355:31;;;;-1:-1:-1;;;3355:31:22;;;;;;;;;3272:121;;;:::o;3504:398::-;3573:11;3812:83;3829:3;3870:7;-1:-1:-1;;;;;3858:24:22;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3858:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3858:26:22;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3858:26:22;;;;;;;;;3853:2;:31;3846:2;:39;3812:3;:83::i;:::-;3806:89;3504:398;-1:-1:-1;;;3504:398:22:o;1959:155:28:-;2037:4;2091:7;-1:-1:-1;;;;;2079:24:28;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2079:26:28;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2079:26:28;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2079:26:28;;;;;;;;;2074:2;:31;2067:2;:39;2060:3;:47;;;;;;2053:54;;1959:155;;;;;:::o;1809:144::-;1885:4;1935:8;1930:14;;1925:2;:19;1918:2;:27;1908:6;:38;;;;2500:132:22;2552:6;2578;;;:30;;-1:-1:-1;;2593:5:22;;;2607:1;2602;2593:5;2602:1;2588:15;;;;;:20;2578:30;2570:55;;;;-1:-1:-1;;;2570:55:22;;;;;;;;3148:118;3231:5;;;3226:16;;;;3218:41;;;;-1:-1:-1;;;3218:41:22;;;;;;;;845:8070:28;;;;;;;;;-1:-1:-1;845:8070:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;454:722;;582:3;575:4;567:6;563:17;559:27;549:2;;600:1;597;590:12;549:2;630:6;624:13;652:80;667:64;724:6;667:64;;;652:80;;;643:89;;749:5;774:6;767:5;760:21;804:4;796:6;792:17;782:27;;826:4;821:3;817:14;810:21;;879:6;926:3;918:4;910:6;906:17;901:3;897:27;894:36;891:2;;;943:1;940;933:12;891:2;968:1;953:217;978:6;975:1;972:13;953:217;;;1036:3;1058:48;1102:3;1090:10;1058:48;;;1046:61;;-1:-1;1130:4;1121:14;;;;1149;;;;;1000:1;993:9;953:217;;;957:14;542:634;;;;;;;;1184:128;1259:13;;1277:30;1259:13;1277:30;;1319:130;1386:20;;1411:33;1386:20;1411:33;;1456:134;1534:13;;1552:33;1534:13;1552:33;;1611:336;;;1725:3;1718:4;1710:6;1706:17;1702:27;1692:2;;1743:1;1740;1733:12;1692:2;-1:-1;1763:20;;1803:18;1792:30;;1789:2;;;1835:1;1832;1825:12;1789:2;1869:4;1861:6;1857:17;1845:29;;1920:3;1912:4;1904:6;1900:17;1890:8;1886:32;1883:41;1880:2;;;1937:1;1934;1927:12;1880:2;1685:262;;;;;;1955:174;2053:13;;2071:53;2053:13;2071:53;;2500:980;;2627:4;2615:9;2610:3;2606:19;2602:30;2599:2;;;2645:1;2642;2635:12;2599:2;2663:20;2678:4;2663:20;;;2654:29;-1:-1;2751:1;2783:49;2828:3;2808:9;2783:49;;;2758:75;;-1:-1;2895:2;2928:49;2973:3;2949:22;;;2928:49;;;2921:4;2914:5;2910:16;2903:75;2854:135;3058:2;3091:49;3136:3;3127:6;3116:9;3112:22;3091:49;;;3084:4;3077:5;3073:16;3066:75;2999:153;3219:2;3252:49;3297:3;3288:6;3277:9;3273:22;3252:49;;;3245:4;3238:5;3234:16;3227:75;3162:151;3377:3;3411:47;3454:3;3445:6;3434:9;3430:22;3411:47;;;3404:4;3397:5;3393:16;3386:73;3323:147;2593:887;;;;;3765:126;3830:20;;3855:31;3830:20;3855:31;;3898:263;;4013:2;4001:9;3992:7;3988:23;3984:32;3981:2;;;4029:1;4026;4019:12;3981:2;4064:1;4081:64;4137:7;4117:9;4081:64;;4168:883;;;;;;;4367:3;4355:9;4346:7;4342:23;4338:33;4335:2;;;4384:1;4381;4374:12;4335:2;4419:1;4436:53;4481:7;4461:9;4436:53;;;4426:63;;4398:97;4526:2;4544:61;4597:7;4588:6;4577:9;4573:22;4544:61;;;4534:71;;4505:106;4642:2;4660:53;4705:7;4696:6;4685:9;4681:22;4660:53;;;4650:63;;4621:98;4750:2;4768:53;4813:7;4804:6;4793:9;4789:22;4768:53;;;4758:63;;4729:98;4886:3;4875:9;4871:19;4858:33;4911:18;4903:6;4900:30;4897:2;;;4943:1;4940;4933:12;4897:2;4971:64;5027:7;5018:6;5007:9;5003:22;4971:64;;;4961:74;;;;4837:204;4329:722;;;;;;;;;5058:743;;;;;;5230:3;5218:9;5209:7;5205:23;5201:33;5198:2;;;5247:1;5244;5237:12;5198:2;5282:1;5299:53;5344:7;5324:9;5299:53;;;5289:63;;5261:97;5389:2;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;;;5397:63;;5368:98;5497:2;5515:53;5560:7;5551:6;5540:9;5536:22;5515:53;;;5505:63;;5476:98;5605:2;5623:53;5668:7;5659:6;5648:9;5644:22;5623:53;;;5613:63;;5584:98;5713:3;5732:53;5777:7;5768:6;5757:9;5753:22;5732:53;;;5722:63;;5692:99;5192:609;;;;;;;;;5808:491;;;;5946:2;5934:9;5925:7;5921:23;5917:32;5914:2;;;5962:1;5959;5952:12;5914:2;5997:1;6014:53;6059:7;6039:9;6014:53;;;6004:63;;5976:97;6104:2;6122:53;6167:7;6158:6;6147:9;6143:22;6122:53;;;6112:63;;6083:98;6212:2;6230:53;6275:7;6266:6;6255:9;6251:22;6230:53;;;6220:63;;6191:98;5908:391;;;;;;6306:491;;;;6444:2;6432:9;6423:7;6419:23;6415:32;6412:2;;;6460:1;6457;6450:12;6412:2;6495:1;6512:53;6557:7;6537:9;6512:53;;;6502:63;;6474:97;6602:2;6620:53;6665:7;6656:6;6645:9;6641:22;6620:53;;;6610:63;;6581:98;6710:2;6728:53;6773:7;6764:6;6753:9;6749:22;6728:53;;6804:366;;;6925:2;6913:9;6904:7;6900:23;6896:32;6893:2;;;6941:1;6938;6931:12;6893:2;6976:1;6993:53;7038:7;7018:9;6993:53;;;6983:63;;6955:97;7083:2;7101:53;7146:7;7137:6;7126:9;7122:22;7101:53;;;7091:63;;7062:98;6887:283;;;;;;7675:617;;;;;7830:3;7818:9;7809:7;7805:23;7801:33;7798:2;;;7847:1;7844;7837:12;7798:2;7882:1;7899:53;7944:7;7924:9;7899:53;;;7889:63;;7861:97;7989:2;8007:53;8052:7;8043:6;8032:9;8028:22;8007:53;;;7997:63;;7968:98;8097:2;8115:53;8160:7;8151:6;8140:9;8136:22;8115:53;;;8105:63;;8076:98;8205:2;8223:53;8268:7;8259:6;8248:9;8244:22;8223:53;;;8213:63;;8184:98;7792:500;;;;;;;;8299:613;;;;;8452:3;8440:9;8431:7;8427:23;8423:33;8420:2;;;8469:1;8466;8459:12;8420:2;8504:1;8521:53;8566:7;8546:9;8521:53;;;8511:63;;8483:97;8611:2;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;;;8619:63;;8590:98;8719:2;8737:52;8781:7;8772:6;8761:9;8757:22;8737:52;;8919:392;;9059:2;9047:9;9038:7;9034:23;9030:32;9027:2;;;9075:1;9072;9065:12;9027:2;9110:24;;9154:18;9143:30;;9140:2;;;9186:1;9183;9176:12;9140:2;9206:89;9287:7;9278:6;9267:9;9263:22;9206:89;;9318:257;;9430:2;9418:9;9409:7;9405:23;9401:32;9398:2;;;9446:1;9443;9436:12;9398:2;9481:1;9498:61;9551:7;9531:9;9498:61;;9582:263;;9697:2;9685:9;9676:7;9672:23;9668:32;9665:2;;;9713:1;9710;9703:12;9665:2;9748:1;9765:64;9821:7;9801:9;9765:64;;9852:303;;9987:2;9975:9;9966:7;9962:23;9958:32;9955:2;;;10003:1;10000;9993:12;9955:2;10038:1;10055:84;10131:7;10111:9;10055:84;;10464:318;;10606:3;10594:9;10585:7;10581:23;10577:33;10574:2;;;10623:1;10620;10613:12;10574:2;10658:1;10675:91;10758:7;10738:9;10675:91;;11059:399;;;11191:2;11179:9;11170:7;11166:23;11162:32;11159:2;;;11207:1;11204;11197:12;11159:2;11242:1;11259:64;11315:7;11295:9;11259:64;;;11249:74;;11221:108;11360:2;11378:64;11434:7;11425:6;11414:9;11410:22;11378:64;;11465:741;;;;;;11639:3;11627:9;11618:7;11614:23;11610:33;11607:2;;;11656:1;11653;11646:12;11607:2;11691:1;11708:53;11753:7;11733:9;11708:53;;;11698:63;;11670:97;11798:2;11816:53;11861:7;11852:6;11841:9;11837:22;11816:53;;;11806:63;;11777:98;11906:2;11924:53;11969:7;11960:6;11949:9;11945:22;11924:53;;;11914:63;;11885:98;12042:2;12031:9;12027:18;12014:32;12066:18;12058:6;12055:30;12052:2;;;12098:1;12095;12088:12;12052:2;12126:64;12182:7;12173:6;12162:9;12158:22;12126:64;;;12116:74;;;;11993:203;11601:605;;;;;;;;;12213:809;;;;;;12396:3;12384:9;12375:7;12371:23;12367:33;12364:2;;;12413:1;12410;12403:12;12364:2;12448:1;12465:64;12521:7;12501:9;12465:64;;;12455:74;;12427:108;12566:2;12584:64;12640:7;12631:6;12620:9;12616:22;12584:64;;;12574:74;;12545:109;12685:2;12703:64;12759:7;12750:6;12739:9;12735:22;12703:64;;;12693:74;;12664:109;12804:2;12822:64;12878:7;12869:6;12858:9;12854:22;12822:64;;;12812:74;;12783:109;12923:3;12942:64;12998:7;12989:6;12978:9;12974:22;12942:64;;13030:173;;13117:46;13159:3;13151:6;13117:46;;;-1:-1;;13192:4;13183:14;;13110:93;13211:142;13302:45;13341:5;13302:45;;;13297:3;13290:58;13284:69;;;13360:103;13433:24;13451:5;13433:24;;13621:690;;13766:54;13814:5;13766:54;;;13833:86;13912:6;13907:3;13833:86;;;13826:93;;13940:56;13990:5;13940:56;;;14016:7;14044:1;14029:260;14054:6;14051:1;14048:13;14029:260;;;14121:6;14115:13;14142:63;14201:3;14186:13;14142:63;;;14135:70;;14222:60;14275:6;14222:60;;;14212:70;-1:-1;;14076:1;14069:9;14029:260;;;-1:-1;14302:3;;13745:566;-1:-1;;;;;13745:566;14319:113;14402:24;14420:5;14402:24;;14462:310;;14594:88;14675:6;14670:3;14594:88;;;14587:95;;14694:43;14730:6;14725:3;14718:5;14694:43;;;-1:-1;;14750:16;;14580:192;14780:343;;14890:38;14922:5;14890:38;;;14940:70;15003:6;14998:3;14940:70;;;14933:77;;15015:52;15060:6;15055:3;15048:4;15041:5;15037:16;15015:52;;;15088:29;15110:6;15088:29;;;15079:39;;;;14870:253;-1:-1;;;14870:253;15130:356;;15258:38;15290:5;15258:38;;;15308:88;15389:6;15384:3;15308:88;;;15301:95;;15401:52;15446:6;15441:3;15434:4;15427:5;15423:16;15401:52;;;15465:16;;;;;15238:248;-1:-1;;15238:248;15611:312;;15771:67;15835:2;15830:3;15771:67;;;-1:-1;;;15851:35;;15914:2;15905:12;;15757:166;-1:-1;;15757:166;15932:312;;16092:67;16156:2;16151:3;16092:67;;;-1:-1;;;16172:35;;16235:2;16226:12;;16078:166;-1:-1;;16078:166;16253:315;;16413:67;16477:2;16472:3;16413:67;;;-1:-1;;;16493:38;;16559:2;16550:12;;16399:169;-1:-1;;16399:169;16577:320;;16737:67;16801:2;16796:3;16737:67;;;-1:-1;;;16817:43;;16888:2;16879:12;;16723:174;-1:-1;;16723:174;16906:315;;17066:67;17130:2;17125:3;17066:67;;;-1:-1;;;17146:38;;17212:2;17203:12;;17052:169;-1:-1;;17052:169;17230:312;;17390:67;17454:2;17449:3;17390:67;;;-1:-1;;;17470:35;;17533:2;17524:12;;17376:166;-1:-1;;17376:166;17551:320;;17711:67;17775:2;17770:3;17711:67;;;-1:-1;;;17791:43;;17862:2;17853:12;;17697:174;-1:-1;;17697:174;17999:439;;18199:93;18288:3;18279:6;18199:93;;;18192:100;;18310:103;18409:3;18400:6;18392;18310:103;;;18303:110;18180:258;-1:-1;;;;;18180:258;18445:213;18563:2;18548:18;;18577:71;18552:9;18621:6;18577:71;;18665:647;18893:3;18878:19;;18908:79;18882:9;18960:6;18908:79;;;18998:72;19066:2;19055:9;19051:18;19042:6;18998:72;;;19081;19149:2;19138:9;19134:18;19125:6;19081:72;;;19201:9;19195:4;19191:20;19186:2;19175:9;19171:18;19164:48;19226:76;19297:4;19288:6;19226:76;;;19218:84;18864:448;-1:-1;;;;;;18864:448;19319:324;19465:2;19450:18;;19479:71;19454:9;19523:6;19479:71;;;19561:72;19629:2;19618:9;19614:18;19605:6;19561:72;;19650:361;19818:2;19832:47;;;19803:18;;19893:108;19803:18;19987:6;19893:108;;20018:213;20136:2;20121:18;;20150:71;20125:9;20194:6;20150:71;;20238:324;20384:2;20369:18;;20398:71;20373:9;20442:6;20398:71;;;20480:72;20548:2;20537:9;20533:18;20524:6;20480:72;;20569:435;20743:2;20728:18;;20757:71;20732:9;20801:6;20757:71;;;20839:72;20907:2;20896:9;20892:18;20883:6;20839:72;;;20922;20990:2;20979:9;20975:18;20966:6;20922:72;;21011:407;21202:2;21216:47;;;21187:18;;21277:131;21187:18;21277:131;;21425:407;21616:2;21630:47;;;21601:18;;21691:131;21601:18;21691:131;;21839:407;22030:2;22044:47;;;22015:18;;22105:131;22015:18;22105:131;;22253:407;22444:2;22458:47;;;22429:18;;22519:131;22429:18;22519:131;;22667:407;22858:2;22872:47;;;22843:18;;22933:131;22843:18;22933:131;;23081:407;23272:2;23286:47;;;23257:18;;23347:131;23257:18;23347:131;;23495:407;23686:2;23700:47;;;23671:18;;23761:131;23671:18;23761:131;;24460:435;24634:2;24619:18;;24648:71;24623:9;24692:6;24648:71;;;24730:72;24798:2;24787:9;24783:18;24774:6;24730:72;;25336:256;25398:2;25392:9;25424:17;;;25499:18;25484:34;;25520:22;;;25481:62;25478:2;;;25556:1;25553;25546:12;25478:2;25572;25565:22;25376:216;;-1:-1;25376:216;25599:304;;25758:18;25750:6;25747:30;25744:2;;;25790:1;25787;25780:12;25744:2;-1:-1;25825:4;25813:17;;;25878:15;;25681:222;25910:151;26034:4;26025:14;;25982:79;26068:137;26171:12;;26142:63;26456:178;26574:19;;;26623:4;26614:14;;26567:67;27138:91;;27200:24;27218:5;27200:24;;27342:85;27408:13;27401:21;;27384:43;27434:72;27496:5;27479:27;27513:111;;27595:24;27613:5;27595:24;;27823:121;-1:-1;;;;;27885:54;;27868:76;28030:81;28101:4;28090:16;;28073:38;28118:129;;28205:37;28236:5;28205:37;;28498:145;28579:6;28574:3;28569;28556:30;-1:-1;28635:1;28617:16;;28610:27;28549:94;28652:268;28717:1;28724:101;28738:6;28735:1;28732:13;28724:101;;;28805:11;;;28799:18;28786:11;;;28779:39;28760:2;28753:10;28724:101;;;28840:6;28837:1;28834:13;28831:2;;;28905:1;28896:6;28891:3;28887:16;28880:27;28831:2;28701:219;;;;;28928:97;29016:2;28996:14;-1:-1;;28992:28;;28976:49;29033:117;29102:24;29120:5;29102:24;;;29095:5;29092:35;29082:2;;29141:1;29138;29131:12;29082:2;29076:74;;29297:111;29363:21;29378:5;29363:21;;29415:117;29484:24;29502:5;29484:24;;29539:157;29628:44;29666:5;29628:44;;30105:113;30172:22;30188:5;30172:22;", "source": "// Largely referenced from https://github.com/mrdavey/CollateralSwapFrontend\n\npragma solidity 0.5.16;\npragma experimental ABIEncoderV2;\n\nimport \"../lib/aave/FlashLoanReceiverBase.sol\";\n\nimport \"../lib/makerdao/DssProxyActionsBase.sol\";\n\nimport \"../lib/uniswap/UniswapBase.sol\";\n\nimport \"../lib/dapphub/Guard.sol\";\n\nimport \"../proxies/DACProxy.sol\";\n\n\nimport \"../interfaces/aave/ILendingPoolAddressesProvider.sol\";\nimport \"../interfaces/aave/ILendingPool.sol\";\n\nimport \"../interfaces/uniswap/IUniswapExchange.sol\";\nimport \"../interfaces/uniswap/IUniswapFactory.sol\";\n\nimport \"../interfaces/IERC20.sol\";\n\nimport \"../interfaces/compound/IComptroller.sol\";\nimport \"../interfaces/compound/ICToken.sol\";\nimport \"../interfaces/compound/ICEther.sol\";\n\nimport \"../interfaces/makerdao/IDssProxyActions.sol\";\n\nimport \"../registries/AddressRegistry.sol\";\n\n\ncontract DedgeMakerManager is DssProxyActionsBase {\n function () external payable {}\n\n constructor () public {}\n\n struct ImportMakerVaultCallData {\n address addressRegistryAddress;\n uint cdpId;\n address collateralCTokenAddress;\n address collateralJoinAddress;\n uint8 collateralDecimals;\n }\n\n // Helper functions\n function _proxyGuardPermit(address payable proxyAddress, address src) internal {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).permit(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _proxyGuardForbid(address payable proxyAddress, address src) internal {\n address g = address(DACProxy(proxyAddress).authority());\n\n DSGuard(g).forbid(\n bytes32(bytes20(address(src))),\n DSGuard(g).ANY(),\n DSGuard(g).ANY()\n );\n }\n\n function _convert18ToDecimal(uint amount, uint8 decimals) internal returns (uint) {\n return amount / (10 ** (18 - uint(decimals)));\n }\n\n function _convert18ToGemUnits(address gemJoin, uint256 wad) internal returns (uint) {\n return wad / (10 ** (18 - GemJoinLike(gemJoin).dec()));\n }\n\n // Gets vault debt in 18 wei\n function getVaultDebt(address manager, uint cdp) public view returns (uint debt)\n {\n address vat = ManagerLike(manager).vat();\n address urn = ManagerLike(manager).urns(cdp);\n bytes32 ilk = ManagerLike(manager).ilks(cdp);\n address owner = ManagerLike(manager).owns(cdp);\n\n debt = _getWipeAllWad(vat, owner, urn, ilk);\n }\n\n function getVaultCollateral(\n address manager,\n uint cdp\n ) public view returns (uint ink) {\n address vat = ManagerLike(manager).vat();\n address urn = ManagerLike(manager).urns(cdp);\n bytes32 ilk = ManagerLike(manager).ilks(cdp);\n\n // Note: This returns in 18 decimals, need to\n // convert to gemUnits before passing it to\n // dss-proxy-actions\n (ink,) = VatLike(vat).urns(ilk, urn);\n }\n\n // Function to be called by proxy post loan\n // in order to import maker vault\n function importMakerVaultPostLoan(\n uint _amount,\n uint _aaveFee,\n uint _protocolFee,\n bytes calldata _data\n ) external {\n // Calculate total debt\n uint totalDebt = _amount + _aaveFee + _protocolFee;\n\n // Reconstruct data\n ImportMakerVaultCallData memory imvCalldata = abi.decode(_data, (ImportMakerVaultCallData));\n\n // Extract relevant data\n AddressRegistry addressRegistry = AddressRegistry(imvCalldata.addressRegistryAddress);\n address cdpManager = addressRegistry.DssCdpManagerAddress();\n address collateralCTokenAddress = imvCalldata.collateralCTokenAddress;\n\n // Collateral in 18 decimal places\n uint collateral18 = getVaultCollateral(cdpManager, imvCalldata.cdpId);\n\n // Joins the ETH/GEM/DAI market in compound if they haven't already\n address[] memory enterMarketsCToken = new address[](2);\n enterMarketsCToken[0] = collateralCTokenAddress;\n enterMarketsCToken[1] = addressRegistry.CDaiAddress();\n\n uint[] memory enterMarketErrors = IComptroller(\n addressRegistry.CompoundComptrollerAddress()\n ).enterMarkets(enterMarketsCToken);\n\n require(enterMarketErrors[0] == 0, \"mkr-enter-gem-failed\");\n require(enterMarketErrors[1] == 0, \"mkr-enter-dai-failed\");\n\n if (ManagerLike(cdpManager).ilks(imvCalldata.cdpId) == bytes32(\"ETH-A\")) {\n wipeAllAndFreeETH(\n cdpManager,\n addressRegistry.EthJoinAddress(),\n addressRegistry.DaiJoinAddress(),\n imvCalldata.cdpId,\n collateral18\n );\n\n // Supply ETH and Borrow DAI (Compound)\n ICEther(addressRegistry.CEtherAddress()).mint.value(collateral18)();\n require(\n ICToken(addressRegistry.CDaiAddress()).borrow(totalDebt) == 0,\n \"dai-borrow-fail\"\n );\n } else {\n // Free GEM\n wipeAllAndFreeGem(\n cdpManager,\n imvCalldata.collateralJoinAddress,\n addressRegistry.DaiJoinAddress(),\n imvCalldata.cdpId,\n _convert18ToGemUnits(\n imvCalldata.collateralJoinAddress,\n collateral18\n )\n );\n\n // Convert collateral to relevant decimal places\n uint collateralFixedDec = _convert18ToDecimal(\n collateral18, imvCalldata.collateralDecimals\n );\n\n // Approve CToken Collateral underlying to enable call transferFrom\n IERC20(ICToken(collateralCTokenAddress).underlying())\n .approve(collateralCTokenAddress, collateralFixedDec);\n\n // Supply GEM and Borrow DAI (Compound)\n require(\n ICToken(collateralCTokenAddress).mint(\n collateralFixedDec\n ) == 0,\n \"gem-supply-fail\"\n );\n require(\n ICToken(addressRegistry.CDaiAddress()).borrow(totalDebt) == 0,\n \"dai-borrow-fail\"\n );\n }\n }\n\n /* \n Main entry point maker vault into Dedge\n\n @params:\n dacProxyAddress: User's proxy address\n addressRegistryAddress: AddressRegistry's Address\n cdpId: User's cdpId\n executeOperationCalldataParams:\n Abi-encoded `data` used by User's proxy's `execute(address, )` function\n Used to delegatecall to another contract (i.e. this contract) in the context\n of the proxy. This allows for better flexibility and decoupling of logic from\n user's proxy. In this specific case, it is expecting the results from: (from JS)\n\n ```\n const IDedgeMakerManager = ethers.utils.Interface(DedgeMakerManager.abi)\n\n const executeOperationCalldataParams = IDedgeMakerManager\n .functions\n .importMakerVaultPostLoan\n .encode([ ])\n ```\n */\n function importMakerVault(\n address dedgeMakerManagerAddress,\n address payable dacProxyAddress,\n address addressRegistryAddress,\n uint cdpId,\n bytes calldata executeOperationCalldataParams\n ) external {\n // Get Address Registry\n AddressRegistry addressRegistry = AddressRegistry(addressRegistryAddress);\n\n // Get cdpManager and proxy's guard address\n address cdpManager = addressRegistry.DssCdpManagerAddress();\n\n // Get Debt\n uint daiDebt = getVaultDebt(cdpManager, cdpId);\n\n // Injects the target address into calldataParams\n // so user proxy knows which address it'll be calling `calldataParams` on\n bytes memory addressAndExecuteOperationCalldataParams = abi.encodePacked(\n abi.encode(dedgeMakerManagerAddress),\n executeOperationCalldataParams\n );\n \n // Get lending pool address\n ILendingPool lendingPool = ILendingPool(\n ILendingPoolAddressesProvider(\n addressRegistry.AaveLendingPoolAddressProviderAddress()\n ).getLendingPool()\n );\n\n cdpAllow(addressRegistry.DssCdpManagerAddress(), cdpId, dedgeMakerManagerAddress, 1);\n _proxyGuardPermit(dacProxyAddress, address(lendingPool));\n\n lendingPool.flashLoan(\n dacProxyAddress,\n addressRegistry.DaiAddress(),\n daiDebt,\n addressAndExecuteOperationCalldataParams\n );\n\n // Once we're done with the vault, give it away (its empty anyway)\n give(addressRegistry.DssCdpManagerAddress(), cdpId, address(1));\n // Lending pool can't call our proxy address anymore\n _proxyGuardForbid(dacProxyAddress, address(lendingPool));\n }\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/managers/DedgeMakerManager.sol", "ast": { @@ -17748,18 +17748,12 @@ "1": { "events": {}, "links": {}, - "address": "0x87eF232edDb1619374b30039a07b93aDd8d1f400", - "transactionHash": "0xaf01ac33848d9f8530bfb37d9f45409dc8d66eb0497a2040e65ee8db8edab6d3" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0x9561C133DD8580860B6b7E504bC5Aa500f0f06a7", - "transactionHash": "0x05b3385789f6b75109d58513aac0cbd9683605c9a443de8f2b0643b435f2b2a8" + "address": "0x1C9c3ED6De13F423a4457aCCfa4e09bc436D5e89", + "transactionHash": "0x05aded1910eda1d16f9de08d4e0c2c0a45f0aca7ed1672b01d4a8560b3ba6cc3" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T05:45:42.983Z", + "updatedAt": "2020-04-03T06:28:59.340Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/DeployedAddresses.json b/packages/smart-contracts/artifacts/DeployedAddresses.json index 6c1762e..1bc3209 100644 --- a/packages/smart-contracts/artifacts/DeployedAddresses.json +++ b/packages/smart-contracts/artifacts/DeployedAddresses.json @@ -1 +1 @@ -{"dacProxyFactoryAddress":"0xb06121EA08019dF9F7F3eA76b465067bfA3f7f5F","dedgeCompoundManagerAddress":"0xd1a3438BbC0EAAE24EC7b94ca471Ebca9c371a8d","dedgeMakerManagerAddress":"0x87eF232edDb1619374b30039a07b93aDd8d1f400","dedgeExitManagerAddress":"0xd773FAE3d5Efce9d00D9104898c45ef432373906","dedgeGeneralManagerAddress":"0xa69B107791b8D0dF8c317dD9533260826C11F80C","addressRegistryAddress":"0x3BDb8b7d03aB4299250e9B7Ef0C717c8a1fD3913"} \ No newline at end of file +{"dacProxyFactoryAddress":"0x572bfabaeb0f7F5d65EEa04D85595010756Ba986","dedgeCompoundManagerAddress":"0x16493dfB0281bA27C8B712f6Eb8eC32bcc50EAEc","dedgeMakerManagerAddress":"0x1C9c3ED6De13F423a4457aCCfa4e09bc436D5e89","dedgeExitManagerAddress":"0x81BFDCF729B5cAC3c4f1F906b63F26E5865b615B","dedgeGeneralManagerAddress":"0x40b4C8B5EE1FDd5259E40907E257f11819681b3d","addressRegistryAddress":"0x584d265d2b2c221676137d930A96458B8C30199F"} \ No newline at end of file diff --git a/packages/smart-contracts/artifacts/DssProxyActionsBase.json b/packages/smart-contracts/artifacts/DssProxyActionsBase.json index 89abf64..1dcc3d1 100644 --- a/packages/smart-contracts/artifacts/DssProxyActionsBase.json +++ b/packages/smart-contracts/artifacts/DssProxyActionsBase.json @@ -243,11 +243,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dink\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dart\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"DssProxyActionsBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50611641806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806396e8d72c1161005b57806396e8d72c1461028d578063ba727a95146102ef578063bcd6deec14610367578063c56167c6146103ff57610088565b80631558b0481461008d5780631d10f231146101055780636aa3ee11146101735780636d68b70b146101f5575b600080fd5b610103600480360360808110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061046d565b005b6101716004803603606081101561011b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061051a565b005b6101df6004803603606081101561018957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105be565b6040518082815260200191505060405180910390f35b61028b600480360360a081101561020b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061068b565b005b6102ed600480360360808110156102a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050610ad1565b005b6103656004803603608081101561030557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b52565b005b6103fd600480360360a081101561037d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610bff565b005b61046b6004803603606081101561041557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f67565b005b8373ffffffffffffffffffffffffffffffffffffffff16639bb8f8388484846040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156104fc57600080fd5b505af1158015610510573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fcafcc6883836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156105a157600080fd5b505af11580156105b5573d6000803e3d6000fd5b50505050505050565b60008373ffffffffffffffffffffffffffffffffffffffff16636090dec584846040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b505050506040513d602081101561067157600080fd5b810190808051906020019092919050505090509392505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d357600080fd5b505afa1580156106e7573d6000803e3d6000fd5b505050506040513d60208110156106fd57600080fd5b8101908080519060200190929190505050905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561076357600080fd5b505afa158015610777573d6000803e3d6000fd5b505050506040513d602081101561078d57600080fd5b8101908080519060200190929190505050905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156107f357600080fd5b505afa158015610807573d6000803e3d6000fd5b505050506040513d602081101561081d57600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b1580156108b657600080fd5b505afa1580156108ca573d6000803e3d6000fd5b505050506040513d60408110156108e057600080fd5b810190808051906020019092919080519060200190929190505050915050610914878461090f8787888861112c565b610f67565b61092e8987610922886113d7565b60000384600003610ad1565b61093a8987308861046d565b8773ffffffffffffffffffffffffffffffffffffffff1663ef693bed30876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156109c157600080fd5b505af11580156109d5573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a2157600080fd5b505af1158015610a35573d6000803e3d6000fd5b505050506040513d6020811015610a4b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610aae57600080fd5b505af1158015610ac2573d6000803e3d6000fd5b50505050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b5050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16630b63fb628484846040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4757600080fd5b505afa158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b8101908080519060200190929190505050905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cd757600080fd5b505afa158015610ceb573d6000803e3d6000fd5b505050506040513d6020811015610d0157600080fd5b8101908080519060200190929190505050905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d6757600080fd5b505afa158015610d7b573d6000803e3d6000fd5b505050506040513d6020811015610d9157600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b158015610e2a57600080fd5b505afa158015610e3e573d6000803e3d6000fd5b505050506040513d6040811015610e5457600080fd5b810190808051906020019092919080519060200190929190505050915050610e888784610e838787888861112c565b610f67565b6000610e948987611458565b9050610eb08a88610ea4846113d7565b60000385600003610ad1565b610ebc8a88308461046d565b8873ffffffffffffffffffffffffffffffffffffffff1663ef693bed30886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b5050505050505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d6020811015610fd957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561107057600080fd5b505af1158015611084573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561110f57600080fd5b505af1158015611123573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d60a08110156111aa57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d604081101561129957600080fd5b81019080805190602001909291908051906020019092919050505091505060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561133657600080fd5b505afa15801561134a573d6000803e3d6000fd5b505050506040513d602081101561136057600080fd5b81019080805190602001909291905050509050600061138861138284866114f4565b83611589565b90506b033b2e3c9fd0803ce8000000818161139f57fe5b049450806113b9866b033b2e3c9fd0803ce80000006114f4565b106113c457846113c9565b600185015b945050505050949350505050565b60008190506000811215611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e742d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b919050565b60006114ec828473ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d60208110156114d057600080fd5b8101908080519060200190929190505050601203600a0a6114f4565b905092915050565b600080821480611511575082828385029250828161150e57fe5b04145b611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d756c2d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115611606576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7375622d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b9291505056fea265627a7a72315820009cb85852ab0fb1ffa3d74bfc8e89255fd3a99fcd6ec236feafd6a4a59cfc2664736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806396e8d72c1161005b57806396e8d72c1461028d578063ba727a95146102ef578063bcd6deec14610367578063c56167c6146103ff57610088565b80631558b0481461008d5780631d10f231146101055780636aa3ee11146101735780636d68b70b146101f5575b600080fd5b610103600480360360808110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061046d565b005b6101716004803603606081101561011b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061051a565b005b6101df6004803603606081101561018957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105be565b6040518082815260200191505060405180910390f35b61028b600480360360a081101561020b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061068b565b005b6102ed600480360360808110156102a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050610ad1565b005b6103656004803603608081101561030557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b52565b005b6103fd600480360360a081101561037d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610bff565b005b61046b6004803603606081101561041557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f67565b005b8373ffffffffffffffffffffffffffffffffffffffff16639bb8f8388484846040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156104fc57600080fd5b505af1158015610510573d6000803e3d6000fd5b5050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663fcafcc6883836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156105a157600080fd5b505af11580156105b5573d6000803e3d6000fd5b50505050505050565b60008373ffffffffffffffffffffffffffffffffffffffff16636090dec584846040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b505050506040513d602081101561067157600080fd5b810190808051906020019092919050505090509392505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156106d357600080fd5b505afa1580156106e7573d6000803e3d6000fd5b505050506040513d60208110156106fd57600080fd5b8101908080519060200190929190505050905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561076357600080fd5b505afa158015610777573d6000803e3d6000fd5b505050506040513d602081101561078d57600080fd5b8101908080519060200190929190505050905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156107f357600080fd5b505afa158015610807573d6000803e3d6000fd5b505050506040513d602081101561081d57600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b1580156108b657600080fd5b505afa1580156108ca573d6000803e3d6000fd5b505050506040513d60408110156108e057600080fd5b810190808051906020019092919080519060200190929190505050915050610914878461090f8787888861112c565b610f67565b61092e8987610922886113d7565b60000384600003610ad1565b61093a8987308861046d565b8773ffffffffffffffffffffffffffffffffffffffff1663ef693bed30876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156109c157600080fd5b505af11580156109d5573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a2157600080fd5b505af1158015610a35573d6000803e3d6000fd5b505050506040513d6020811015610a4b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610aae57600080fd5b505af1158015610ac2573d6000803e3d6000fd5b50505050505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b5050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16630b63fb628484846040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b5050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4757600080fd5b505afa158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b8101908080519060200190929190505050905060008673ffffffffffffffffffffffffffffffffffffffff16632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cd757600080fd5b505afa158015610ceb573d6000803e3d6000fd5b505050506040513d6020811015610d0157600080fd5b8101908080519060200190929190505050905060008773ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d6757600080fd5b505afa158015610d7b573d6000803e3d6000fd5b505050506040513d6020811015610d9157600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b158015610e2a57600080fd5b505afa158015610e3e573d6000803e3d6000fd5b505050506040513d6040811015610e5457600080fd5b810190808051906020019092919080519060200190929190505050915050610e888784610e838787888861112c565b610f67565b6000610e948987611458565b9050610eb08a88610ea4846113d7565b60000385600003610ad1565b610ebc8a88308461046d565b8873ffffffffffffffffffffffffffffffffffffffff1663ef693bed30886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b5050505050505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d6020811015610fd957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b384836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561107057600080fd5b505af1158015611084573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16633b4da69f83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561110f57600080fd5b505af1158015611123573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d60a08110156111aa57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d604081101561129957600080fd5b81019080805190602001909291908051906020019092919050505091505060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561133657600080fd5b505afa15801561134a573d6000803e3d6000fd5b505050506040513d602081101561136057600080fd5b81019080805190602001909291905050509050600061138861138284866114f4565b83611589565b90506b033b2e3c9fd0803ce8000000818161139f57fe5b049450806113b9866b033b2e3c9fd0803ce80000006114f4565b106113c457846113c9565b600185015b945050505050949350505050565b60008190506000811215611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e742d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b919050565b60006114ec828473ffffffffffffffffffffffffffffffffffffffff1663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d60208110156114d057600080fd5b8101908080519060200190929190505050601203600a0a6114f4565b905092915050565b600080821480611511575082828385029250828161150e57fe5b04145b611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6d756c2d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115611606576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f7375622d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b9291505056fea265627a7a72315820009cb85852ab0fb1ffa3d74bfc8e89255fd3a99fcd6ec236feafd6a4a59cfc2664736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dink\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dart\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"DssProxyActionsBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50610f2a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806396e8d72c1161005b57806396e8d72c14610189578063ba727a95146101c1578063bcd6deec146101fb578063c56167c61461023d57610088565b80631558b0481461008d5780631d10f231146100c95780636aa3ee11146100ff5780636d68b70b14610147575b600080fd5b6100c7600480360360808110156100a357600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610273565b005b6100c7600480360360608110156100df57600080fd5b506001600160a01b038135811691602081013591604090910135166102ea565b6101356004803603606081101561011557600080fd5b506001600160a01b03813581169160208101359160409091013516610367565b60408051918252519081900360200190f35b6100c7600480360360a081101561015d57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356103ee565b6100c76004803603608081101561019f57600080fd5b506001600160a01b038135169060208101359060408101359060600135610740565b6100c7600480360360808110156101d757600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610796565b6100c7600480360360a081101561021157600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356107ef565b6100c76004803603606081101561025357600080fd5b506001600160a01b03813581169160208101359091169060400135610a82565b604080516313771f0760e31b8152600481018590526001600160a01b03848116602483015260448201849052915191861691639bb8f8389160648082019260009290919082900301818387803b1580156102cc57600080fd5b505af11580156102e0573d6000803e3d6000fd5b5050505050505050565b826001600160a01b031663fcafcc6883836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561034a57600080fd5b505af115801561035e573d6000803e3d6000fd5b50505050505050565b60408051636090dec560e01b8152600481018490526001600160a01b0383811660248301529151600092861691636090dec591604480830192602092919082900301818787803b1580156103ba57600080fd5b505af11580156103ce573d6000803e3d6000fd5b505050506040513d60208110156103e457600080fd5b5051949350505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561042957600080fd5b505afa15801561043d573d6000803e3d6000fd5b505050506040513d602081101561045357600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b1580156104a257600080fd5b505afa1580156104b6573d6000803e3d6000fd5b505050506040513d60208110156104cc57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561051b57600080fd5b505afa15801561052f573d6000803e3d6000fd5b505050506040513d602081101561054557600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561059957600080fd5b505afa1580156105ad573d6000803e3d6000fd5b505050506040513d60408110156105c357600080fd5b506020015190506105e087846105db87828088610bb3565b610a82565b6105fa89876105ee88610d83565b60000384600003610740565b61060689873088610273565b6040805163ef693bed60e01b81523060048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b15801561065457600080fd5b505af1158015610668573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050506040513d60208110156106d157600080fd5b505160408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561071d57600080fd5b505af1158015610731573d6000803e3d6000fd5b50505050505050505050505050565b836001600160a01b03166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b1580156102cc57600080fd5b604080516305b1fdb160e11b8152600481018590526001600160a01b03848116602483015260448201849052915191861691630b63fb629160648082019260009290919082900301818387803b1580156102cc57600080fd5b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561082a57600080fd5b505afa15801561083e573d6000803e3d6000fd5b505050506040513d602081101561085457600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d602081101561094657600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561099a57600080fd5b505afa1580156109ae573d6000803e3d6000fd5b505050506040513d60408110156109c457600080fd5b506020015190506109dc87846105db87828088610bb3565b60006109e88987610dce565b9050610a048a886109f884610d83565b60000385600003610740565b610a108a883084610273565b6040805163ef693bed60e01b81523060048201526024810188905290516001600160a01b038b169163ef693bed91604480830192600092919082900301818387803b158015610a5e57600080fd5b505af1158015610a72573d6000803e3d6000fd5b5050505050505050505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610abd57600080fd5b505af1158015610ad1573d6000803e3d6000fd5b505050506040513d6020811015610ae757600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b158015610b3b57600080fd5b505af1158015610b4f573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561034a57600080fd5b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015610bfa57600080fd5b505afa158015610c0e573d6000803e3d6000fd5b505050506040513d60a0811015610c2457600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b158015610c7b57600080fd5b505afa158015610c8f573d6000803e3d6000fd5b505050506040513d6040811015610ca557600080fd5b5060209081015160408051633612d9a360e11b81526001600160a01b038a811660048301529151929450600093918b1692636c25b34692602480840193919291829003018186803b158015610cf957600080fd5b505afa158015610d0d573d6000803e3d6000fd5b505050506040513d6020811015610d2357600080fd5b505190506000610d3c610d368486610e4d565b83610eae565b90506b033b2e3c9fd0803ce80000008104945080610d66866b033b2e3c9fd0803ce8000000610e4d565b10610d715784610d76565b846001015b9998505050505050505050565b806000811215610dc9576040805162461bcd60e51b815260206004820152600c60248201526b696e742d6f766572666c6f7760a01b604482015290519081900360640190fd5b919050565b6000610e4682846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610e0f57600080fd5b505af1158015610e23573d6000803e3d6000fd5b505050506040513d6020811015610e3957600080fd5b5051601203600a0a610e4d565b9392505050565b6000811580610e6857505080820282828281610e6557fe5b04145b610ea8576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b92915050565b80820382811115610ea8576040805162461bcd60e51b815260206004820152600c60248201526b7375622d6f766572666c6f7760a01b604482015290519081900360640190fdfea265627a7a723158207530fbf1c31deccc1375eb7a86554ee3b9383e936447e136c6290f42434f126a64736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806396e8d72c1161005b57806396e8d72c14610189578063ba727a95146101c1578063bcd6deec146101fb578063c56167c61461023d57610088565b80631558b0481461008d5780631d10f231146100c95780636aa3ee11146100ff5780636d68b70b14610147575b600080fd5b6100c7600480360360808110156100a357600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610273565b005b6100c7600480360360608110156100df57600080fd5b506001600160a01b038135811691602081013591604090910135166102ea565b6101356004803603606081101561011557600080fd5b506001600160a01b03813581169160208101359160409091013516610367565b60408051918252519081900360200190f35b6100c7600480360360a081101561015d57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356103ee565b6100c76004803603608081101561019f57600080fd5b506001600160a01b038135169060208101359060408101359060600135610740565b6100c7600480360360808110156101d757600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610796565b6100c7600480360360a081101561021157600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356107ef565b6100c76004803603606081101561025357600080fd5b506001600160a01b03813581169160208101359091169060400135610a82565b604080516313771f0760e31b8152600481018590526001600160a01b03848116602483015260448201849052915191861691639bb8f8389160648082019260009290919082900301818387803b1580156102cc57600080fd5b505af11580156102e0573d6000803e3d6000fd5b5050505050505050565b826001600160a01b031663fcafcc6883836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561034a57600080fd5b505af115801561035e573d6000803e3d6000fd5b50505050505050565b60408051636090dec560e01b8152600481018490526001600160a01b0383811660248301529151600092861691636090dec591604480830192602092919082900301818787803b1580156103ba57600080fd5b505af11580156103ce573d6000803e3d6000fd5b505050506040513d60208110156103e457600080fd5b5051949350505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561042957600080fd5b505afa15801561043d573d6000803e3d6000fd5b505050506040513d602081101561045357600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b1580156104a257600080fd5b505afa1580156104b6573d6000803e3d6000fd5b505050506040513d60208110156104cc57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561051b57600080fd5b505afa15801561052f573d6000803e3d6000fd5b505050506040513d602081101561054557600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561059957600080fd5b505afa1580156105ad573d6000803e3d6000fd5b505050506040513d60408110156105c357600080fd5b506020015190506105e087846105db87828088610bb3565b610a82565b6105fa89876105ee88610d83565b60000384600003610740565b61060689873088610273565b6040805163ef693bed60e01b81523060048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b15801561065457600080fd5b505af1158015610668573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050506040513d60208110156106d157600080fd5b505160408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561071d57600080fd5b505af1158015610731573d6000803e3d6000fd5b50505050505050505050505050565b836001600160a01b03166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b1580156102cc57600080fd5b604080516305b1fdb160e11b8152600481018590526001600160a01b03848116602483015260448201849052915191861691630b63fb629160648082019260009290919082900301818387803b1580156102cc57600080fd5b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561082a57600080fd5b505afa15801561083e573d6000803e3d6000fd5b505050506040513d602081101561085457600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b1580156108a357600080fd5b505afa1580156108b7573d6000803e3d6000fd5b505050506040513d60208110156108cd57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d602081101561094657600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561099a57600080fd5b505afa1580156109ae573d6000803e3d6000fd5b505050506040513d60408110156109c457600080fd5b506020015190506109dc87846105db87828088610bb3565b60006109e88987610dce565b9050610a048a886109f884610d83565b60000385600003610740565b610a108a883084610273565b6040805163ef693bed60e01b81523060048201526024810188905290516001600160a01b038b169163ef693bed91604480830192600092919082900301818387803b158015610a5e57600080fd5b505af1158015610a72573d6000803e3d6000fd5b5050505050505050505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610abd57600080fd5b505af1158015610ad1573d6000803e3d6000fd5b505050506040513d6020811015610ae757600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b158015610b3b57600080fd5b505af1158015610b4f573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561034a57600080fd5b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015610bfa57600080fd5b505afa158015610c0e573d6000803e3d6000fd5b505050506040513d60a0811015610c2457600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b158015610c7b57600080fd5b505afa158015610c8f573d6000803e3d6000fd5b505050506040513d6040811015610ca557600080fd5b5060209081015160408051633612d9a360e11b81526001600160a01b038a811660048301529151929450600093918b1692636c25b34692602480840193919291829003018186803b158015610cf957600080fd5b505afa158015610d0d573d6000803e3d6000fd5b505050506040513d6020811015610d2357600080fd5b505190506000610d3c610d368486610e4d565b83610eae565b90506b033b2e3c9fd0803ce80000008104945080610d66866b033b2e3c9fd0803ce8000000610e4d565b10610d715784610d76565b846001015b9998505050505050505050565b806000811215610dc9576040805162461bcd60e51b815260206004820152600c60248201526b696e742d6f766572666c6f7760a01b604482015290519081900360640190fd5b919050565b6000610e4682846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610e0f57600080fd5b505af1158015610e23573d6000803e3d6000fd5b505050506040513d6020811015610e3957600080fd5b5051601203600a0a610e4d565b9392505050565b6000811580610e6857505080820282828281610e6557fe5b04145b610ea8576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b92915050565b80820382811115610ea8576040805162461bcd60e51b815260206004820152600c60248201526b7375622d6f766572666c6f7760a01b604482015290519081900360640190fdfea265627a7a723158207530fbf1c31deccc1375eb7a86554ee3b9383e936447e136c6290f42434f126a64736f6c63430005100032", "sourceMap": "3076:5487:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3076:5487:22;;;;;;;", - "deployedSourceMap": "3076:5487:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3076:5487:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6211:166;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6211:166:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5884:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5884:143:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5707:171;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5707:171:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6554:1056;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6554:1056:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6383:165;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6383:165:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6033:172;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6033:172:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7616:945;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7616:945:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2663:409;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2663:409:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6211:166;6342:7;6330:25;;;6356:3;6361;6366;6330:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6330:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6330:40:22;;;;6211:166;;;;:::o;5884:143::-;5997:7;5985:25;;;6011:3;6016;5985:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5985:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5985:35:22;;;;5884:143;;;:::o;5707:171::-;5810:8;5848:7;5836:25;;;5862:3;5867;5836:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5836:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5836:35:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5836:35:22;;;;;;;;;;;;;;;;5830:41;;5707:171;;;;;:::o;6554:1056::-;6716:11;6742:7;6730:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6730:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6730:26:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6730:26:22;;;;;;;;;;;;;;;;6716:40;;6766:11;6792:7;6780:25;;;6806:3;6780:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6780:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6780:30:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6780:30:22;;;;;;;;;;;;;;;;6766:44;;6820:11;6846:7;6834:25;;;6860:3;6834:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6834:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6834:30:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6834:30:22;;;;;;;;;;;;;;;;6820:44;;6877:8;6897:3;6889:17;;;6907:3;6912;6889:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6889:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6889:27:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6889:27:22;;;;;;;;;;;;;;;;;;;;;;;;;6874:42;;;6968:62;6981:7;6990:3;6995:34;7010:3;7015;7020;7025;6995:14;:34::i;:::-;6968:12;:62::i;:::-;7108:101;7126:7;7147:3;7165:11;7171:4;7165:5;:11::i;:::-;7164:12;;7195:3;7190:9;;7108:4;:101::i;:::-;7283:39;7288:7;7297:3;7310:4;7317;7283;:39::i;:::-;7401:7;7389:25;;;7423:4;7430;7389:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7389:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7389:46:22;;;;7489:7;7477:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:26:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7477:26:22;;;;;;;;;;;;;;;;:35;;;7513:4;7477:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:41:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:41:22;;;;6554:1056;;;;;;;;;:::o;6383:165::-;6511:7;6499:25;;;6525:3;6530:4;6536;6499:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6499:42:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6499:42:22;;;;6383:165;;;;:::o;6033:172::-;6167:7;6155:29;;;6185:3;6190;6195:2;6155:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6155:43:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6155:43:22;;;;6033:172;;;;:::o;7616:945::-;7778:11;7804:7;7792:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7792:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7792:26:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7792:26:22;;;;;;;;;;;;;;;;7778:40;;7828:11;7854:7;7842:25;;;7868:3;7842:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7842:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7842:30:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7842:30:22;;;;;;;;;;;;;;;;7828:44;;7882:11;7908:7;7896:25;;;7922:3;7896:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7896:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7896:30:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7896:30:22;;;;;;;;;;;;;;;;7882:44;;7939:8;7959:3;7951:17;;;7969:3;7974;7951:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7951:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7951:27:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7951:27:22;;;;;;;;;;;;;;;;;;;;;;;;;7936:42;;;8030:62;8043:7;8052:3;8057:34;8072:3;8077;8082;8087;8057:14;:34::i;:::-;8030:12;:62::i;:::-;8102:10;8115:26;8127:7;8136:4;8115:11;:26::i;:::-;8102:39;;8220:102;8238:7;8259:3;8277:12;8283:5;8277;:12::i;:::-;8276:13;;8308:3;8303:9;;8220:4;:102::i;:::-;8396:40;8401:7;8410:3;8423:4;8430:5;8396:4;:40::i;:::-;8520:7;8508:25;;;8542:4;8549;8508:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8508:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8508:46:22;;;;7616:945;;;;;;;;;;:::o;2663:409::-;2962:3;2950:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:22:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2950:22:22;;;;;;;;;;;;;;;;:30;;;2981:3;2986;2950:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:40:22;;;;3046:3;3034:21;;;3056:3;3061;3034:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3034:31:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3034:31:22;;;;2663:409;;;:::o;5058:643::-;5195:8;5259:9;5283:3;5275:17;;;5293:3;5275:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5275:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5275:22:22;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5275:22:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5256:41;;;;;;5354:8;5374:3;5366:17;;;5384:3;5389;5366:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5366:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5366:27:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5366:27:22;;;;;;;;;;;;;;;;;;;;;;;;;5351:42;;;5448:8;5467:3;5459:16;;;5476:3;5459:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5459:21:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5459:21:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5459:21:22;;;;;;;;;;;;;;;;5448:32;;5491:8;5502:24;5506:14;5510:3;5515:4;5506:3;:14::i;:::-;5522:3;5502;:24::i;:::-;5491:35;;2458:8;5542:3;:9;;;;;;5536:15;;5675:3;5659:13;5663:3;2458:8;5659:3;:13::i;:::-;:19;:35;;5691:3;5659:35;;;5687:1;5681:3;:7;5659:35;5653:41;;5058:643;;;;;;;;;;:::o;3272:121::-;3318:5;3343:1;3335:10;;3368:1;3363;:6;;3355:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3272:121;;;:::o;3504:398::-;3573:11;3812:83;3829:3;3870:7;3858:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3858:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3858:26:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3858:26:22;;;;;;;;;;;;;;;;3853:2;:31;3846:2;:39;3812:3;:83::i;:::-;3806:89;;3504:398;;;;:::o;2500:132::-;2552:6;2583:1;2578;:6;:30;;;;2607:1;2602;2597;2593;:5;2589:9;;;2588:15;;;;;;:20;2578:30;2570:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:132;;;;:::o;3148:118::-;3200:6;3241:1;3235;3231;:5;3227:9;;;3226:16;;3218:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3148:118;;;;:::o", + "deployedSourceMap": "3076:5487:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3076:5487:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6211:166;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6211:166:22;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5884:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5884:143:22;;;;;;;;;;;;;;;;;:::i;5707:171::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5707:171:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6554:1056;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6554:1056:22;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6383:165::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6383:165:22;;;;;;;;;;;;;;;;;;:::i;6033:172::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6033:172:22;;;;;;;;;;;;;;;;;;;;:::i;7616:945::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7616:945:22;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2663:409::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2663:409:22;;;;;;;;;;;;;;;;;:::i;6211:166::-;6330:40;;;-1:-1:-1;;;6330:40:22;;;;;;;;-1:-1:-1;;;;;6330:40:22;;;;;;;;;;;;;;;:25;;;;;;:40;;;;;-1:-1:-1;;6330:40:22;;;;;;;;-1:-1:-1;6330:25:22;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;6330:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6330:40:22;;;;6211:166;;;;:::o;5884:143::-;5997:7;-1:-1:-1;;;;;5985:25:22;;6011:3;6016;5985:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5985:35:22;-1:-1:-1;;;;;5985:35:22;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5985:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5985:35:22;;;;5884:143;;;:::o;5707:171::-;5836:35;;;-1:-1:-1;;;5836:35:22;;;;;;;;-1:-1:-1;;;;;5836:35:22;;;;;;;;;5810:8;;5836:25;;;;;:35;;;;;;;;;;;;;;5810:8;5836:25;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;5836:35:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5836:35:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5836:35:22;;5707:171;-1:-1:-1;;;;5707:171:22:o;6554:1056::-;6716:11;6742:7;-1:-1:-1;;;;;6730:24:22;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6730:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6730:26:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6730:26:22;6780:30;;;-1:-1:-1;;;6780:30:22;;;;;;;;;;6730:26;;-1:-1:-1;6766:11:22;;-1:-1:-1;;;;;6780:25:22;;;;;:30;;;;;6730:26;;6780:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;6780:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6780:30:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6780:30:22;6834;;;-1:-1:-1;;;6834:30:22;;;;;;;;;;6780;;-1:-1:-1;6820:11:22;;-1:-1:-1;;;;;6834:25:22;;;;;:30;;;;;6780;;6834;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;6834:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6834:30:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6834:30:22;6889:27;;;-1:-1:-1;;;6889:27:22;;;;;;;;-1:-1:-1;;;;;6889:27:22;;;;;;;;;6834:30;;-1:-1:-1;6877:8:22;;6889:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;6889:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6889:27:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6889:27:22;;;;-1:-1:-1;6968:62:22;6981:7;6990:3;6995:34;7010:3;6990;;7025;6995:14;:34::i;:::-;6968:12;:62::i;:::-;7108:101;7126:7;7147:3;7165:11;7171:4;7165:5;:11::i;:::-;7164:12;;7195:3;7190:9;;7108:4;:101::i;:::-;7283:39;7288:7;7297:3;7310:4;7317;7283;:39::i;:::-;7389:46;;;-1:-1:-1;;;7389:46:22;;7423:4;7389:46;;;;;;;;;;;;-1:-1:-1;;;;;7389:25:22;;;;;:46;;;;;-1:-1:-1;;7389:46:22;;;;;;;-1:-1:-1;7389:25:22;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;7389:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7389:46:22;;;;7489:7;-1:-1:-1;;;;;7477:24:22;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:26:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7477:26:22;:41;;;-1:-1:-1;;;7477:41:22;;;;;;;;;;-1:-1:-1;;;;;7477:35:22;;;;;;:41;;;;;-1:-1:-1;;7477:41:22;;;;;;;;-1:-1:-1;7477:35:22;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;7477:41:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7477:41:22;;;;6554:1056;;;;;;;;;:::o;6383:165::-;6511:7;-1:-1:-1;;;;;6499:25:22;;6525:3;6530:4;6536;6499:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;6033:172:22;6155:43;;;-1:-1:-1;;;6155:43:22;;;;;;;;-1:-1:-1;;;;;6155:43:22;;;;;;;;;;;;;;;:29;;;;;;:43;;;;;-1:-1:-1;;6155:43:22;;;;;;;;-1:-1:-1;6155:29:22;:43;;;5:2:-1;;;;30:1;27;20:12;7616:945:22;7778:11;7804:7;-1:-1:-1;;;;;7792:24:22;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7792:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7792:26:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7792:26:22;7842:30;;;-1:-1:-1;;;7842:30:22;;;;;;;;;;7792:26;;-1:-1:-1;7828:11:22;;-1:-1:-1;;;;;7842:25:22;;;;;:30;;;;;7792:26;;7842:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;7842:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7842:30:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7842:30:22;7896;;;-1:-1:-1;;;7896:30:22;;;;;;;;;;7842;;-1:-1:-1;7882:11:22;;-1:-1:-1;;;;;7896:25:22;;;;;:30;;;;;7842;;7896;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;7896:30:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7896:30:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7896:30:22;7951:27;;;-1:-1:-1;;;7951:27:22;;;;;;;;-1:-1:-1;;;;;7951:27:22;;;;;;;;;7896:30;;-1:-1:-1;7939:8:22;;7951:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;7951:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7951:27:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7951:27:22;;;;-1:-1:-1;8030:62:22;8043:7;8052:3;8057:34;8072:3;8052;;8087;8057:14;:34::i;8030:62::-;8102:10;8115:26;8127:7;8136:4;8115:11;:26::i;:::-;8102:39;;8220:102;8238:7;8259:3;8277:12;8283:5;8277;:12::i;:::-;8276:13;;8308:3;8303:9;;8220:4;:102::i;:::-;8396:40;8401:7;8410:3;8423:4;8430:5;8396:4;:40::i;:::-;8508:46;;;-1:-1:-1;;;8508:46:22;;8542:4;8508:46;;;;;;;;;;;;-1:-1:-1;;;;;8508:25:22;;;;;:46;;;;;-1:-1:-1;;8508:46:22;;;;;;;-1:-1:-1;8508:25:22;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;8508:46:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8508:46:22;;;;7616:945;;;;;;;;;;:::o;2663:409::-;2962:3;-1:-1:-1;;;;;2950:20:22;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2950:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:22:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2950:22:22;:40;;;-1:-1:-1;;;2950:40:22;;-1:-1:-1;;;;;2950:40:22;;;;;;;;;;;;;;;:30;;;;;;;:40;;;;;-1:-1:-1;;2950:40:22;;;;;;;-1:-1:-1;2950:30:22;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;2950:40:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2950:40:22;;;;3046:3;-1:-1:-1;;;;;3034:21:22;;3056:3;3061;3034:31;;;;;;;;;;;;;-1:-1:-1;;;;;3034:31:22;-1:-1:-1;;;;;3034:31:22;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5058:643:22;5195:8;5259:9;5283:3;-1:-1:-1;;;;;5275:17:22;;5293:3;5275:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5275:22:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5275:22:22;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;5275:22:22;;;;5366:27;;-1:-1:-1;;;5366:27:22;;;;;;;;-1:-1:-1;;;;;5366:27:22;;;;;;;;;5275:22;;-1:-1:-1;5354:8:22;;5366:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;5366:27:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5366:27:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5366:27:22;;;;;;5459:21;;-1:-1:-1;;;5459:21:22;;-1:-1:-1;;;;;5459:21:22;;;;;;;;;5366:27;;-1:-1:-1;5448:8:22;;5459:16;;;;;;:21;;;;;5366:27;;5459:21;;;;;;:16;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;5459:21:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5459:21:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5459:21:22;;-1:-1:-1;5491:8:22;5502:24;5506:14;5510:3;5515:4;5506:3;:14::i;:::-;5522:3;5502;:24::i;:::-;5491:35;-1:-1:-1;2458:8:22;5491:35;5542:9;5536:15;;5675:3;5659:13;5663:3;2458:8;5659:3;:13::i;:::-;:19;:35;;5691:3;5659:35;;;5681:3;5687:1;5681:7;5659:35;5653:41;5058:643;-1:-1:-1;;;;;;;;;5058:643:22:o;3272:121::-;3343:1;3318:5;3363:6;;;3355:31;;;;;-1:-1:-1;;;3355:31:22;;;;;;;;;;;;-1:-1:-1;;;3355:31:22;;;;;;;;;;;;;;;3272:121;;;:::o;3504:398::-;3573:11;3812:83;3829:3;3870:7;-1:-1:-1;;;;;3858:24:22;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3858:26:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3858:26:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3858:26:22;3853:2;:31;3846:2;:39;3812:3;:83::i;:::-;3806:89;3504:398;-1:-1:-1;;;3504:398:22:o;2500:132::-;2552:6;2578;;;:30;;-1:-1:-1;;2593:5:22;;;2607:1;2602;2593:5;2602:1;2588:15;;;;;:20;2578:30;2570:55;;;;;-1:-1:-1;;;2570:55:22;;;;;;;;;;;;-1:-1:-1;;;2570:55:22;;;;;;;;;;;;;;;2500:132;;;;:::o;3148:118::-;3231:5;;;3226:16;;;;3218:41;;;;;-1:-1:-1;;;3218:41:22;;;;;;;;;;;;-1:-1:-1;;;3218:41:22;;;;;;;;;;;;;", "source": "pragma solidity 0.5.16;\n\nimport \"../../interfaces/IERC20.sol\";\n\n\ncontract GemLike {\n function approve(address, uint) public;\n function transfer(address, uint) public;\n function transferFrom(address, address, uint) public;\n function deposit() public payable;\n function withdraw(uint) public;\n}\n\ncontract ManagerLike {\n function cdpCan(address, uint, address) public view returns (uint);\n function ilks(uint) public view returns (bytes32);\n function owns(uint) public view returns (address);\n function urns(uint) public view returns (address);\n function vat() public view returns (address);\n function open(bytes32, address) public returns (uint);\n function give(uint, address) public;\n function cdpAllow(uint, address, uint) public;\n function urnAllow(address, uint) public;\n function frob(uint, int, int) public;\n function flux(uint, address, uint) public;\n function move(uint, address, uint) public;\n function exit(address, uint, address, uint) public;\n function quit(uint, address) public;\n function enter(address, uint) public;\n function shift(uint, uint) public;\n}\n\ncontract VatLike {\n function can(address, address) public view returns (uint);\n function ilks(bytes32) public view returns (uint, uint, uint, uint, uint);\n function dai(address) public view returns (uint);\n function urns(bytes32, address) public view returns (uint, uint);\n function frob(bytes32, address, address, address, int, int) public;\n function hope(address) public;\n function move(address, address, uint) public;\n}\n\ncontract GemJoinLike {\n function dec() public returns (uint);\n function gem() public returns (GemLike);\n function join(address, uint) public payable;\n function exit(address, uint) public;\n}\n\ncontract DaiJoinLike {\n function vat() public returns (VatLike);\n function dai() public returns (GemLike);\n function join(address, uint) public payable;\n function exit(address, uint) public;\n}\n\ncontract JugLike {\n function drip(bytes32) public returns (uint);\n}\n\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n// WARNING: These functions meant to be used as a a library for a DSProxy. Some are unsafe if you call them directly.\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\ncontract Common {\n uint256 constant RAY = 10 ** 27;\n\n // Internal functions\n\n function mul(uint x, uint y) internal pure returns (uint z) {\n require(y == 0 || (z = x * y) / y == x, \"mul-overflow\");\n }\n\n // Public functions\n\n function daiJoin_join(\n address apt,\n address urn,\n uint wad\n ) public {\n // DAI Already flashloaned\n // DaiJoinLike(apt).dai().transferFrom(dacProxyAddress, dedgeMakerManagerAddress, wad);\n // Approves adapter to take the DAI amount\n DaiJoinLike(apt).dai().approve(apt, wad);\n // Joins DAI into the vat\n DaiJoinLike(apt).join(urn, wad);\n }\n}\n\ncontract DssProxyActionsBase is Common {\n // Internal functions\n\n function sub(uint x, uint y) internal pure returns (uint z) {\n require((z = x - y) <= x, \"sub-overflow\");\n }\n\n function toInt(uint x) internal pure returns (int y) {\n y = int(x);\n require(y >= 0, \"int-overflow\");\n }\n\n function toRad(uint wad) internal pure returns (uint rad) {\n rad = mul(wad, 10 ** 27);\n }\n\n function convertTo18(address gemJoin, uint256 amt) internal returns (uint256 wad) {\n // For those collaterals that have less than 18 decimals precision we need to do the conversion before passing to frob function\n // Adapters will automatically handle the difference of precision\n wad = mul(\n amt,\n 10 ** (18 - GemJoinLike(gemJoin).dec())\n );\n }\n\n function convertToGemUnits(address gemJoin, uint256 wad) internal returns (uint256 amt) {\n // For those collaterals that have less than 18 decimals precision we need to do the conversion\n amt = wad / (10 ** (18 - GemJoinLike(gemJoin).dec()));\n }\n\n function _getDrawDart(\n address vat,\n address jug,\n address urn,\n bytes32 ilk,\n uint wad\n ) internal returns (int dart) {\n // Updates stability fee rate\n uint rate = JugLike(jug).drip(ilk);\n\n // Gets DAI balance of the urn in the vat\n uint dai = VatLike(vat).dai(urn);\n\n // If there was already enough DAI in the vat balance, just exits it without adding more debt\n if (dai < mul(wad, RAY)) {\n // Calculates the needed dart so together with the existing dai in the vat is enough to exit wad amount of DAI tokens\n dart = toInt(sub(mul(wad, RAY), dai) / rate);\n // This is neeeded due lack of precision. It might need to sum an extra dart wei (for the given DAI wad amount)\n dart = mul(uint(dart), rate) < mul(wad, RAY) ? dart + 1 : dart;\n }\n }\n\n function _getWipeAllWad(\n address vat,\n address usr,\n address urn,\n bytes32 ilk\n ) internal view returns (uint wad) {\n // Gets actual rate from the vat\n (, uint rate,,,) = VatLike(vat).ilks(ilk);\n // Gets actual art value of the urn\n (, uint art) = VatLike(vat).urns(ilk, urn);\n // Gets actual dai amount in the urn\n uint dai = VatLike(vat).dai(usr);\n\n uint rad = sub(mul(art, rate), dai);\n wad = rad / RAY;\n\n // If the rad precision has some dust, it will need to request for 1 extra wad wei\n wad = mul(wad, RAY) < rad ? wad + 1 : wad;\n }\n\n function open(\n address manager,\n bytes32 ilk,\n address usr\n ) public returns (uint cdp) {\n cdp = ManagerLike(manager).open(ilk, usr);\n }\n\n function give(\n address manager,\n uint cdp,\n address usr\n ) public {\n ManagerLike(manager).give(cdp, usr);\n }\n\n function cdpAllow(\n address manager,\n uint cdp,\n address usr,\n uint ok\n ) public {\n ManagerLike(manager).cdpAllow(cdp, usr, ok);\n }\n\n function flux(\n address manager,\n uint cdp,\n address dst,\n uint wad\n ) public {\n ManagerLike(manager).flux(cdp, dst, wad);\n }\n\n function frob(\n address manager,\n uint cdp,\n int dink,\n int dart\n ) public {\n ManagerLike(manager).frob(cdp, dink, dart);\n }\n\n function wipeAllAndFreeETH(\n address manager,\n address ethJoin,\n address daiJoin,\n uint cdp,\n uint wadC\n ) public {\n address vat = ManagerLike(manager).vat();\n address urn = ManagerLike(manager).urns(cdp);\n bytes32 ilk = ManagerLike(manager).ilks(cdp);\n (, uint art) = VatLike(vat).urns(ilk, urn);\n\n // Joins DAI amount into the vat\n daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk));\n // Paybacks debt to the CDP and unlocks WETH amount from it\n frob(\n manager,\n cdp,\n -toInt(wadC),\n -int(art)\n );\n // Moves the amount from the CDP urn to proxy's address\n flux(manager, cdp, address(this), wadC);\n // Exits WETH amount to proxy address as a token\n GemJoinLike(ethJoin).exit(address(this), wadC);\n // Converts WETH to ETH\n GemJoinLike(ethJoin).gem().withdraw(wadC);\n // Sends ETH back to the user's wallet\n // msg.sender.transfer(wadC);\n }\n\n function wipeAllAndFreeGem(\n address manager,\n address gemJoin,\n address daiJoin,\n uint cdp,\n uint wadC\n ) public {\n address vat = ManagerLike(manager).vat();\n address urn = ManagerLike(manager).urns(cdp);\n bytes32 ilk = ManagerLike(manager).ilks(cdp);\n (, uint art) = VatLike(vat).urns(ilk, urn);\n\n // Joins DAI amount into the vat\n daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk));\n uint wad18 = convertTo18(gemJoin, wadC);\n // Paybacks debt to the CDP and unlocks token amount from it\n frob(\n manager,\n cdp,\n -toInt(wad18),\n -int(art)\n );\n // Moves the amount from the CDP urn to proxy's address\n flux(manager, cdp, address(this), wad18);\n // Exits token amount to the user's wallet as a token\n GemJoinLike(gemJoin).exit(address(this), wadC);\n }\n}", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol", "ast": { @@ -4110,10 +4110,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4843,10 +4843,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5156,10 +5156,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10729,7 +10729,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -10846,7 +10846,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12377,7 +12377,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12494,7 +12494,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -16670,10 +16670,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17403,10 +17403,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17716,10 +17716,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23289,7 +23289,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -23406,7 +23406,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24937,7 +24937,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25054,7 +25054,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25376,7 +25376,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.862Z", + "updatedAt": "2020-04-03T06:25:13.551Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/FlashLoanReceiverBase.json b/packages/smart-contracts/artifacts/FlashLoanReceiverBase.json index 2a019de..fb94cf4 100644 --- a/packages/smart-contracts/artifacts/FlashLoanReceiverBase.json +++ b/packages/smart-contracts/artifacts/FlashLoanReceiverBase.json @@ -52,7 +52,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"addressesProvider\",\"outputs\":[{\"internalType\":\"contract ILendingPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":\"FlashLoanReceiverBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"addressesProvider\",\"outputs\":[{\"internalType\":\"contract ILendingPoolAddressesProvider\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":\"FlashLoanReceiverBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/aave/FlashLoanReceiverBase.sol\":{\"keccak256\":\"0x0a3802a7d1bf99d7ccb8046f2632f0a3fa42ebea5e1033cc13eb843b32cbf4c3\",\"urls\":[\"bzz-raw://68a6bcf9ccfe8d72448c3d3dadd328b14a741ba9d24e5aa20ad82b72c7108a7b\",\"dweb:/ipfs/QmeprLqp3jFqbxmNwuZ8Vm2EdeKp5idQZi4VSCLQZa28qY\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -165,10 +165,10 @@ "id": 2044, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7815, + "referencedDeclaration": 7737, "src": "292:8:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$7815", + "typeIdentifier": "t_contract$_SafeMath_$7737", "typeString": "library SafeMath" } }, @@ -1457,10 +1457,10 @@ "id": 2044, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7815, + "referencedDeclaration": 7737, "src": "292:8:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$7815", + "typeIdentifier": "t_contract$_SafeMath_$7737", "typeString": "library SafeMath" } }, @@ -2649,7 +2649,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.797Z", + "updatedAt": "2020-04-03T06:25:13.481Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/GemJoinLike.json b/packages/smart-contracts/artifacts/GemJoinLike.json index 22d0ef7..024c52f 100644 --- a/packages/smart-contracts/artifacts/GemJoinLike.json +++ b/packages/smart-contracts/artifacts/GemJoinLike.json @@ -72,7 +72,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"dec\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"gem\",\"outputs\":[{\"internalType\":\"contract GemLike\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"join\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"GemJoinLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"dec\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"gem\",\"outputs\":[{\"internalType\":\"contract GemLike\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"join\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"GemJoinLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -3939,10 +3939,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4672,10 +4672,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4985,10 +4985,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10558,7 +10558,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -10675,7 +10675,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12206,7 +12206,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12323,7 +12323,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -16499,10 +16499,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17232,10 +17232,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17545,10 +17545,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23118,7 +23118,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -23235,7 +23235,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24766,7 +24766,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24883,7 +24883,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25205,7 +25205,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.875Z", + "updatedAt": "2020-04-03T06:25:13.566Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/GemLike.json b/packages/smart-contracts/artifacts/GemLike.json index 2a38e98..a15fe21 100644 --- a/packages/smart-contracts/artifacts/GemLike.json +++ b/packages/smart-contracts/artifacts/GemLike.json @@ -91,7 +91,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"GemLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"GemLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -3958,10 +3958,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4691,10 +4691,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5004,10 +5004,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10577,7 +10577,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -10694,7 +10694,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12225,7 +12225,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12342,7 +12342,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -16518,10 +16518,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17251,10 +17251,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17564,10 +17564,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23137,7 +23137,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -23254,7 +23254,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24785,7 +24785,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24902,7 +24902,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25224,7 +25224,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.884Z", + "updatedAt": "2020-04-03T06:25:13.576Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/ICEther.json b/packages/smart-contracts/artifacts/ICEther.json index 2a56d23..a544130 100644 --- a/packages/smart-contracts/artifacts/ICEther.json +++ b/packages/smart-contracts/artifacts/ICEther.json @@ -182,7 +182,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":\"ICEther\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"repayBorrow\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":\"ICEther\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICEther.sol\":{\"keccak256\":\"0xa65d6eb1f4bae0350a65a2148fc83c6cab8952d11b19c39e4ab5c27d1d48773e\",\"urls\":[\"bzz-raw://84d98fe4bf18381ad57769601c6b53135c0e5ff5f191a62cd129cb5a815efc79\",\"dweb:/ipfs/QmaoXTSmkuT5u2HkEkggYzEE4mBA1MZp5yDrDKWU6Y8jgm\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -1635,7 +1635,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T03:20:43.681Z", + "updatedAt": "2020-04-03T06:25:13.465Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/ICToken.json b/packages/smart-contracts/artifacts/ICToken.json index f470db6..813a337 100644 --- a/packages/smart-contracts/artifacts/ICToken.json +++ b/packages/smart-contracts/artifacts/ICToken.json @@ -365,7 +365,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":\"ICToken\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":\"ICToken\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICToken.sol\":{\"keccak256\":\"0xd07da3ef9345ec40b090ea93df6d5a9ff7a03996a3c55f51aabee4d50ccdc201\",\"urls\":[\"bzz-raw://21c88532f770e244133c240d448092d8ea0e5a47dcf951522aa66106e15758e3\",\"dweb:/ipfs/QmXFkrbfpgcCFvoziSR3FnptBPf79og2tSR8deQGmViAkg\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -3332,7 +3332,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T03:20:43.685Z", + "updatedAt": "2020-04-03T06:25:13.466Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/ICompoundPriceOracle.json b/packages/smart-contracts/artifacts/ICompoundPriceOracle.json index 96147f2..6c6b500 100644 --- a/packages/smart-contracts/artifacts/ICompoundPriceOracle.json +++ b/packages/smart-contracts/artifacts/ICompoundPriceOracle.json @@ -23,7 +23,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICompoundPriceOracle.sol\":\"ICompoundPriceOracle\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICompoundPriceOracle.sol\":{\"keccak256\":\"0xb19ae717f5b05fbc0ffdf3a4b96cd71811071ab2d3c5f73ee8835541c5bd573b\",\"urls\":[\"bzz-raw://52efc7166851b50b539166f234babc41cf25a4cc2c5997c9bc3f801117b4ea47\",\"dweb:/ipfs/QmXv2P3p6adgTCHUMXdufESTbJEdbQ3DkLKRnsENRC1Dmx\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICompoundPriceOracle.sol\":\"ICompoundPriceOracle\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/ICompoundPriceOracle.sol\":{\"keccak256\":\"0xb19ae717f5b05fbc0ffdf3a4b96cd71811071ab2d3c5f73ee8835541c5bd573b\",\"urls\":[\"bzz-raw://52efc7166851b50b539166f234babc41cf25a4cc2c5997c9bc3f801117b4ea47\",\"dweb:/ipfs/QmXv2P3p6adgTCHUMXdufESTbJEdbQ3DkLKRnsENRC1Dmx\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -280,7 +280,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.784Z", + "updatedAt": "2020-04-03T06:25:13.468Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/IComptroller.json b/packages/smart-contracts/artifacts/IComptroller.json index 74ef1a5..3f9740d 100644 --- a/packages/smart-contracts/artifacts/IComptroller.json +++ b/packages/smart-contracts/artifacts/IComptroller.json @@ -619,7 +619,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"exitMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAssetsIn\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isComptroller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateCalculateSeizeTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"mintVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowerIndex\",\"type\":\"uint256\"}],\"name\":\"repayBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"isComptroller()\":{\"details\":\"Implementations should simply return true.\",\"return\":\"true\"}}},\"userdoc\":{\"methods\":{\"enterMarkets(address[])\":{\"notice\":\"* Assets You Are In **\"},\"getAccountLiquidity(address)\":{\"notice\":\"* Policy Hooks **\"},\"isComptroller()\":{\"notice\":\"Marker function used for light validation when updating the comptroller of a market\"},\"liquidateCalculateSeizeTokens(address,address,uint256)\":{\"notice\":\"* Liquidity/Liquidation Calculations **\"}}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":\"IComptroller\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"cTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"}],\"name\":\"exitMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAssetsIn\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isComptroller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"liquidateBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"liquidateCalculateSeizeTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintTokens\",\"type\":\"uint256\"}],\"name\":\"mintVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeemVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowerIndex\",\"type\":\"uint256\"}],\"name\":\"repayBorrowVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cTokenCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"cTokenBorrowed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seizeVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferAllowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"transferTokens\",\"type\":\"uint256\"}],\"name\":\"transferVerify\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"isComptroller()\":{\"details\":\"Implementations should simply return true.\",\"return\":\"true\"}}},\"userdoc\":{\"methods\":{\"enterMarkets(address[])\":{\"notice\":\"* Assets You Are In **\"},\"getAccountLiquidity(address)\":{\"notice\":\"* Policy Hooks **\"},\"isComptroller()\":{\"notice\":\"Marker function used for light validation when updating the comptroller of a market\"},\"liquidateCalculateSeizeTokens(address,address,uint256)\":{\"notice\":\"* Liquidity/Liquidation Calculations **\"}}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":\"IComptroller\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/compound/IComptroller.sol\":{\"keccak256\":\"0xc69ade89655263aaffac1183c0e842ea95294171280f2c5ab755286a66de3ff9\",\"urls\":[\"bzz-raw://742ca904eaf238a83270e315410b35e83048ee0c6529190be2ae9f9bc20e6187\",\"dweb:/ipfs/QmPW3WFbHZjsGQ6vMgPRPWHCNJLNxyEbR4w1DAvd466N51\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -6222,7 +6222,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.784Z", + "updatedAt": "2020-04-03T06:25:13.468Z", "devdoc": { "methods": { "isComptroller()": { diff --git a/packages/smart-contracts/artifacts/IDssProxyActions.json b/packages/smart-contracts/artifacts/IDssProxyActions.json index edf054e..2dede97 100644 --- a/packages/smart-contracts/artifacts/IDssProxyActions.json +++ b/packages/smart-contracts/artifacts/IDssProxyActions.json @@ -1272,7 +1272,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"draw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"enter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"}],\"name\":\"ethJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"exitETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"exitGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"freeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"freeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dink\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dart\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"}],\"name\":\"gemJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"proxyRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"}],\"name\":\"giveToProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"obj\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"hope\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"lockETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"lockETHAndDraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"}],\"name\":\"lockGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"}],\"name\":\"lockGemAndDraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"}],\"name\":\"makeGemBag\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bag\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rad\",\"type\":\"uint256\"}],\"name\":\"move\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"obj\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"nope\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"openLockETHAndDraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gntJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"openLockGNTAndDraw\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bag\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"}],\"name\":\"openLockGemAndDraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"}],\"name\":\"quit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"safeLockETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"safeLockGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"safeWipe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"safeWipeAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdpSrc\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cdpOrg\",\"type\":\"uint256\"}],\"name\":\"shift\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"gem\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"urnAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"wipe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"wipeAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"wipeAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"wipeAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol\":\"IDssProxyActions\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol\":{\"keccak256\":\"0xc670eb42195a3be8cf8ea3d11f3afa457377bfd52382094f65c63182e679863f\",\"urls\":[\"bzz-raw://855acaff1c943a63987c31ee6db3362b6c85ab419046430eaf160a96c0dc70e4\",\"dweb:/ipfs/QmWEdWqVUfsYKrJcxVQ9sowhTGUsaoydpUWsQjHkFmAPHX\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"daiJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"draw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"enter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"}],\"name\":\"ethJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"exitETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"exitGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"freeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"freeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dink\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dart\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"apt\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"urn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"}],\"name\":\"gemJoin_join\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"proxyRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"}],\"name\":\"giveToProxy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"obj\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"hope\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"lockETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"lockETHAndDraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"}],\"name\":\"lockGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"}],\"name\":\"lockGemAndDraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"}],\"name\":\"makeGemBag\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bag\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rad\",\"type\":\"uint256\"}],\"name\":\"move\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"obj\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"nope\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"openLockETHAndDraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gntJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"openLockGNTAndDraw\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bag\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"jug\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"ilk\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"}],\"name\":\"openLockGemAndDraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"}],\"name\":\"quit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"safeLockETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"transferFrom\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"safeLockGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"safeWipe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"safeWipeAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdpSrc\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cdpOrg\",\"type\":\"uint256\"}],\"name\":\"shift\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"gem\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"usr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ok\",\"type\":\"uint256\"}],\"name\":\"urnAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"wipe\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"}],\"name\":\"wipeAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"}],\"name\":\"wipeAllAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ethJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"wipeAndFreeETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gemJoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"daiJoin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cdp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wadD\",\"type\":\"uint256\"}],\"name\":\"wipeAndFreeGem\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol\":\"IDssProxyActions\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/makerdao/IDssProxyActions.sol\":{\"keccak256\":\"0xc670eb42195a3be8cf8ea3d11f3afa457377bfd52382094f65c63182e679863f\",\"urls\":[\"bzz-raw://855acaff1c943a63987c31ee6db3362b6c85ab419046430eaf160a96c0dc70e4\",\"dweb:/ipfs/QmWEdWqVUfsYKrJcxVQ9sowhTGUsaoydpUWsQjHkFmAPHX\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -12809,7 +12809,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.787Z", + "updatedAt": "2020-04-03T06:25:13.471Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/IERC20.json b/packages/smart-contracts/artifacts/IERC20.json index 894d4a9..82b95ce 100644 --- a/packages/smart-contracts/artifacts/IERC20.json +++ b/packages/smart-contracts/artifacts/IERC20.json @@ -242,7 +242,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. * This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. * Returns a boolean value indicating whether the operation succeeded. * IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. * This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. * Returns a boolean value indicating whether the operation succeeded. * IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -2243,7 +2243,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.772Z", + "updatedAt": "2020-04-03T06:25:13.455Z", "devdoc": { "methods": { "allowance(address,address)": { diff --git a/packages/smart-contracts/artifacts/IFlashLoanReceiver.json b/packages/smart-contracts/artifacts/IFlashLoanReceiver.json index 24a2438..570219c 100644 --- a/packages/smart-contracts/artifacts/IFlashLoanReceiver.json +++ b/packages/smart-contracts/artifacts/IFlashLoanReceiver.json @@ -32,7 +32,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aave\",\"details\":\"implement this interface to develop a flashloan-compatible flashLoanReceiver contract*\",\"methods\":{},\"title\":\"IFlashLoanReceiver interface\"},\"userdoc\":{\"methods\":{},\"notice\":\"Interface for the Aave fee IFlashLoanReceiver.\"}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":\"IFlashLoanReceiver\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aave\",\"details\":\"implement this interface to develop a flashloan-compatible flashLoanReceiver contract*\",\"methods\":{},\"title\":\"IFlashLoanReceiver interface\"},\"userdoc\":{\"methods\":{},\"notice\":\"Interface for the Aave fee IFlashLoanReceiver.\"}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":\"IFlashLoanReceiver\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/IFlashLoanReceiver.sol\":{\"keccak256\":\"0xbd9ee17614d720229da04b4d481b2e6669b5fd9217bc278a93b39a62e2383fde\",\"urls\":[\"bzz-raw://4827232c7582d13c0237ae80b47e2f3dd85499372d80a15c0f31599bb99e26a5\",\"dweb:/ipfs/QmX3mCBdQcCvL9WF5FwToZZpj6VBtkaoN9aZ1tszp7oVjt\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -391,7 +391,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.776Z", + "updatedAt": "2020-04-03T06:25:13.460Z", "devdoc": { "author": "Aave", "details": "implement this interface to develop a flashloan-compatible flashLoanReceiver contract*", diff --git a/packages/smart-contracts/artifacts/ILendingPool.json b/packages/smart-contracts/artifacts/ILendingPool.json index a97989f..5dbdccd 100644 --- a/packages/smart-contracts/artifacts/ILendingPool.json +++ b/packages/smart-contracts/artifacts/ILendingPool.json @@ -515,7 +515,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"addressesProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_referralCode\",\"type\":\"uint16\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"}],\"name\":\"getReserveConfigurationData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidationDiscount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"usageAsCollateralEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"borrowingEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"fixedBorrowRateEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalLiquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableLiquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowsFixed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowsVariable\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedBorrowRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"averageFixedBorrowRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"utilizationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalLiquidityETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalCollateralETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowsETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getUserReserveData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentATokenBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentUnderlyingBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentBorrowBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"principalBorrowBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originationFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"usageAsCollateralEnabled\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_purchaseAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"rebalanceFixedBorrowRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"}],\"name\":\"swapBorrowRateMode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":\"ILendingPool\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"addressesProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_interestRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_referralCode\",\"type\":\"uint16\"}],\"name\":\"borrow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_referralCode\",\"type\":\"uint16\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"}],\"name\":\"getReserveConfigurationData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidationDiscount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategyAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"usageAsCollateralEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"borrowingEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"fixedBorrowRateEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"}],\"name\":\"getReserveData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalLiquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableLiquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowsFixed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowsVariable\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableBorrowRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedBorrowRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"averageFixedBorrowRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"utilizationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"aTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint40\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getUserAccountData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalLiquidityETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalCollateralETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBorrowsETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableBorrowsETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentLiquidationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ltv\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"healthFactor\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getUserReserveData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentATokenBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentUnderlyingBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentBorrowBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"principalBorrowBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowRateMode\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originationFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"variableBorrowIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastUpdateTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"usageAsCollateralEnabled\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_purchaseAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_receiveAToken\",\"type\":\"bool\"}],\"name\":\"liquidationCall\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"rebalanceFixedBorrowRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_onBehalfOf\",\"type\":\"address\"}],\"name\":\"repay\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_useAsCollateral\",\"type\":\"bool\"}],\"name\":\"setUserUseReserveAsCollateral\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"}],\"name\":\"swapBorrowRateMode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":\"ILendingPool\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPool.sol\":{\"keccak256\":\"0xe1a1b1bbf6dc92e86a23b8af9cf04e3e527b766ed1147cce041080d01ede5a24\",\"urls\":[\"bzz-raw://c0a7bf8948392f8f7249a99d39ac0722840faea5767c2f97939657e281d318f5\",\"dweb:/ipfs/QmRmSmKfgegjtAnpQ6t3ucEiq9GUrfYPpi7XucjREHjYFd\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -5244,7 +5244,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.777Z", + "updatedAt": "2020-04-03T06:25:13.460Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/ILendingPoolAddressesProvider.json b/packages/smart-contracts/artifacts/ILendingPoolAddressesProvider.json index d660d9f..aaa8539 100644 --- a/packages/smart-contracts/artifacts/ILendingPoolAddressesProvider.json +++ b/packages/smart-contracts/artifacts/ILendingPoolAddressesProvider.json @@ -332,7 +332,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"getFeeProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolConfigurator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolCore\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolDataProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolLiquidationManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolParametersProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingRateOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPriceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getTokenDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeProvider\",\"type\":\"address\"}],\"name\":\"setFeeProviderImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_configurator\",\"type\":\"address\"}],\"name\":\"setLendingPoolConfiguratorImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lendingPoolCore\",\"type\":\"address\"}],\"name\":\"setLendingPoolCoreImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_provider\",\"type\":\"address\"}],\"name\":\"setLendingPoolDataProviderImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"}],\"name\":\"setLendingPoolImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"}],\"name\":\"setLendingPoolLiquidationManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lendingPoolManager\",\"type\":\"address\"}],\"name\":\"setLendingPoolManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_parametersProvider\",\"type\":\"address\"}],\"name\":\"setLendingPoolParametersProviderImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lendingRateOracle\",\"type\":\"address\"}],\"name\":\"setLendingRateOracle\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_priceOracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenDistributor\",\"type\":\"address\"}],\"name\":\"setTokenDistributor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{},\"title\":\"ILendingPoolAddressesProvider interface\"},\"userdoc\":{\"methods\":{},\"notice\":\"provides the interface to fetch the LendingPoolCore address\"}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":\"ILendingPoolAddressesProvider\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"getFeeProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolConfigurator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolCore\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolDataProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolLiquidationManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingPoolParametersProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLendingRateOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPriceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getTokenDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeProvider\",\"type\":\"address\"}],\"name\":\"setFeeProviderImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_configurator\",\"type\":\"address\"}],\"name\":\"setLendingPoolConfiguratorImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lendingPoolCore\",\"type\":\"address\"}],\"name\":\"setLendingPoolCoreImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_provider\",\"type\":\"address\"}],\"name\":\"setLendingPoolDataProviderImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pool\",\"type\":\"address\"}],\"name\":\"setLendingPoolImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"}],\"name\":\"setLendingPoolLiquidationManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lendingPoolManager\",\"type\":\"address\"}],\"name\":\"setLendingPoolManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_parametersProvider\",\"type\":\"address\"}],\"name\":\"setLendingPoolParametersProviderImpl\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lendingRateOracle\",\"type\":\"address\"}],\"name\":\"setLendingRateOracle\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_priceOracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenDistributor\",\"type\":\"address\"}],\"name\":\"setTokenDistributor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{},\"title\":\"ILendingPoolAddressesProvider interface\"},\"userdoc\":{\"methods\":{},\"notice\":\"provides the interface to fetch the LendingPoolCore address\"}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":\"ILendingPoolAddressesProvider\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0x0b99a26eeba60b8201f6ffd0d9d00bc5562ace9e7998534fd3887d7ba72b7d88\",\"urls\":[\"bzz-raw://9a36c107f3471548d6a13d28e995cb71ef42bafd55bf759b7c1b0ba0fda7170c\",\"dweb:/ipfs/Qme6SJJ3A9MwVwzk6CJC9gN8jAWLkgWQUwzZU4k6eD4BNy\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -2845,7 +2845,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.779Z", + "updatedAt": "2020-04-03T06:25:13.464Z", "devdoc": { "methods": {}, "title": "ILendingPoolAddressesProvider interface" diff --git a/packages/smart-contracts/artifacts/ILendingPoolParametersProvider.json b/packages/smart-contracts/artifacts/ILendingPoolParametersProvider.json index bb05832..4552122 100644 --- a/packages/smart-contracts/artifacts/ILendingPoolParametersProvider.json +++ b/packages/smart-contracts/artifacts/ILendingPoolParametersProvider.json @@ -22,7 +22,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"getFlashLoanFeesInBips\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{},\"title\":\"ILendingPoolAddressesProvider interface\"},\"userdoc\":{\"methods\":{},\"notice\":\"provides the interface to fetch the LendingPoolCore address\"}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":\"ILendingPoolParametersProvider\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"getFlashLoanFeesInBips\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{},\"title\":\"ILendingPoolAddressesProvider interface\"},\"userdoc\":{\"methods\":{},\"notice\":\"provides the interface to fetch the LendingPoolCore address\"}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":\"ILendingPoolParametersProvider\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x90ace0fd5238a92b39b3fad095c046c2707c3027116c7d5f7e80863ca74eb00d\",\"urls\":[\"bzz-raw://068f20bedbbe8f4faff599106162f7c7ede426a689f22c16dc9643bd17268755\",\"dweb:/ipfs/QmVSCkLZ8JD17DvsWtYMBcuZdF3JZpZM9khMbvYFarYGTs\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -275,7 +275,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.781Z", + "updatedAt": "2020-04-03T06:25:13.465Z", "devdoc": { "methods": {}, "title": "ILendingPoolAddressesProvider interface" diff --git a/packages/smart-contracts/artifacts/IUniswapExchange.json b/packages/smart-contracts/artifacts/IUniswapExchange.json index 066d01f..dbfda46 100644 --- a/packages/smart-contracts/artifacts/IUniswapExchange.json +++ b/packages/smart-contracts/artifacts/IUniswapExchange.json @@ -989,7 +989,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min_liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ethToTokenSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ethToTokenSwapOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_sold\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ethToTokenTransferInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ethToTokenTransferOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_sold\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"factoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_sold\",\"type\":\"uint256\"}],\"name\":\"getEthToTokenInputPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"name\":\"getEthToTokenOutputPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"name\":\"getTokenToEthInputPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"}],\"name\":\"getTokenToEthOutputPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"setup\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"tokenToEthSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"tokenToEthSwapOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"tokenToEthTransferInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"tokenToEthTransferOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"exchange_addr\",\"type\":\"address\"}],\"name\":\"tokenToExchangeSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_eth_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"exchange_addr\",\"type\":\"address\"}],\"name\":\"tokenToExchangeSwapOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"exchange_addr\",\"type\":\"address\"}],\"name\":\"tokenToExchangeTransferInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_eth_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"exchange_addr\",\"type\":\"address\"}],\"name\":\"tokenToExchangeTransferOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"tokenToTokenSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_eth_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"tokenToTokenSwapOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"tokenToTokenTransferInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_eth_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"tokenToTokenTransferOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":\"IUniswapExchange\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min_liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ethToTokenSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ethToTokenSwapOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_sold\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ethToTokenTransferInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ethToTokenTransferOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_sold\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"factoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_sold\",\"type\":\"uint256\"}],\"name\":\"getEthToTokenInputPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"name\":\"getEthToTokenOutputPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"name\":\"getTokenToEthInputPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"}],\"name\":\"getTokenToEthOutputPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"setup\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"tokenToEthSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"tokenToEthSwapOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"tokenToEthTransferInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"tokenToEthTransferOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"exchange_addr\",\"type\":\"address\"}],\"name\":\"tokenToExchangeSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_eth_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"exchange_addr\",\"type\":\"address\"}],\"name\":\"tokenToExchangeSwapOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"exchange_addr\",\"type\":\"address\"}],\"name\":\"tokenToExchangeTransferInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_eth_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"exchange_addr\",\"type\":\"address\"}],\"name\":\"tokenToExchangeTransferOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"tokenToTokenSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_eth_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"tokenToTokenSwapOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min_eth_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"tokenToTokenTransferInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_bought\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_tokens_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_eth_sold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token_addr\",\"type\":\"address\"}],\"name\":\"tokenToTokenTransferOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokens_sold\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":\"IUniswapExchange\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -9372,7 +9372,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.791Z", + "updatedAt": "2020-04-03T06:25:13.476Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/IUniswapFactory.json b/packages/smart-contracts/artifacts/IUniswapFactory.json index fec536e..f6baf47 100644 --- a/packages/smart-contracts/artifacts/IUniswapFactory.json +++ b/packages/smart-contracts/artifacts/IUniswapFactory.json @@ -131,7 +131,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"createExchange\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"exchange\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeTemplate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getExchange\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"exchange\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"exchange\",\"type\":\"address\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenWithId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"template\",\"type\":\"address\"}],\"name\":\"initializeFactory\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":\"IUniswapFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"createExchange\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"exchange\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"exchangeTemplate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getExchange\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"exchange\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"exchange\",\"type\":\"address\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenWithId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"template\",\"type\":\"address\"}],\"name\":\"initializeFactory\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":\"IUniswapFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -1102,7 +1102,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.794Z", + "updatedAt": "2020-04-03T06:25:13.479Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/JugLike.json b/packages/smart-contracts/artifacts/JugLike.json index 91348e2..2839fed 100644 --- a/packages/smart-contracts/artifacts/JugLike.json +++ b/packages/smart-contracts/artifacts/JugLike.json @@ -23,7 +23,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"drip\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"JugLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"drip\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"JugLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -3890,10 +3890,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4623,10 +4623,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4936,10 +4936,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10509,7 +10509,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -10626,7 +10626,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12157,7 +12157,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12274,7 +12274,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -16450,10 +16450,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17183,10 +17183,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17496,10 +17496,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23069,7 +23069,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -23186,7 +23186,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24717,7 +24717,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24834,7 +24834,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25156,7 +25156,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.892Z", + "updatedAt": "2020-04-03T06:25:13.585Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/ManagerLike.json b/packages/smart-contracts/artifacts/ManagerLike.json index fe47b8c..401f7d7 100644 --- a/packages/smart-contracts/artifacts/ManagerLike.json +++ b/packages/smart-contracts/artifacts/ManagerLike.json @@ -367,7 +367,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cdpCan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"enter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ilks\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"move\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"owns\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"quit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"shift\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"urnAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"urns\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vat\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"ManagerLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"cdpAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"cdpCan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"enter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"flux\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"give\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ilks\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"move\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"open\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"owns\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"quit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"shift\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"urnAllow\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"urns\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"vat\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"ManagerLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -4234,10 +4234,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4967,10 +4967,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5280,10 +5280,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10853,7 +10853,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -10970,7 +10970,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12501,7 +12501,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12618,7 +12618,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -16794,10 +16794,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17527,10 +17527,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17840,10 +17840,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23413,7 +23413,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -23530,7 +23530,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25061,7 +25061,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25178,7 +25178,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25500,7 +25500,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.901Z", + "updatedAt": "2020-04-03T06:25:13.595Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/Migrations.json b/packages/smart-contracts/artifacts/Migrations.json index 70f2215..7d6eba1 100644 --- a/packages/smart-contracts/artifacts/Migrations.json +++ b/packages/smart-contracts/artifacts/Migrations.json @@ -53,11 +53,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/Migrations.sol\":{\"keccak256\":\"0x5b3bf470fddc971545b13240a991587d98d71ca0bcff91819e54bd51e32ab21a\",\"urls\":[\"bzz-raw://7f783f6433812edb781db0ea7432e04652dac4796dde274d3e194dafdae19c14\",\"dweb:/ipfs/QmZFZNLk25y7UBLDNnjAzoH8SXBPfEN6bWNzGZ2x9C9aVK\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061019c806100606000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd576146100ae575b600080fd5b61004e6100dc565b6040518082815260200191505060405180910390f35b61006c6100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100da600480360360208110156100c457600080fd5b8101908080359060200190929190505050610107565b005b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561016457806001819055505b5056fea265627a7a72315820519e5496e9611b99c43096d22df324a2a3fb21a5a306742a60e7760b65635f7064736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd576146100ae575b600080fd5b61004e6100dc565b6040518082815260200191505060405180910390f35b61006c6100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100da600480360360208110156100c457600080fd5b8101908080359060200190929190505050610107565b005b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561016457806001819055505b5056fea265627a7a72315820519e5496e9611b99c43096d22df324a2a3fb21a5a306742a60e7760b65635f7064736f6c63430005100032", - "sourceMap": "34:311:0:-;;;123:50;8:9:-1;5:2;;;30:1;27;20:12;5:2;123:50:0;158:10;150:5;;:18;;;;;;;;;;;;;;;;;;34:311;;;;;;", - "deployedSourceMap": "34:311:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34:311:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;82:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;58:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;240:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;240:103:0;;;;;;;;;;;;;;;;;:::i;:::-;;82:36;;;;:::o;58:20::-;;;;;;;;;;;;;:::o;240:103::-;223:5;;;;;;;;;;;209:19;;:10;:19;;;205:26;;;329:9;302:24;:36;;;;205:26;240:103;:::o", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/Migrations.sol\":{\"keccak256\":\"0x5b3bf470fddc971545b13240a991587d98d71ca0bcff91819e54bd51e32ab21a\",\"urls\":[\"bzz-raw://7f783f6433812edb781db0ea7432e04652dac4796dde274d3e194dafdae19c14\",\"dweb:/ipfs/QmZFZNLk25y7UBLDNnjAzoH8SXBPfEN6bWNzGZ2x9C9aVK\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560fc806100316000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063445df0ac1460415780638da5cb5b146059578063fdacd57614607b575b600080fd5b60476097565b60408051918252519081900360200190f35b605f609d565b604080516001600160a01b039092168252519081900360200190f35b609560048036036020811015608f57600080fd5b503560ac565b005b60015481565b6000546001600160a01b031681565b6000546001600160a01b031633141560c45760018190555b5056fea265627a7a72315820182ef721bc99d3e75e4c7805b5a3fdc46b720de3726588c325170d29397215a564736f6c63430005100032", + "deployedBytecode": "0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063445df0ac1460415780638da5cb5b146059578063fdacd57614607b575b600080fd5b60476097565b60408051918252519081900360200190f35b605f609d565b604080516001600160a01b039092168252519081900360200190f35b609560048036036020811015608f57600080fd5b503560ac565b005b60015481565b6000546001600160a01b031681565b6000546001600160a01b031633141560c45760018190555b5056fea265627a7a72315820182ef721bc99d3e75e4c7805b5a3fdc46b720de3726588c325170d29397215a564736f6c63430005100032", + "sourceMap": "34:311:0:-;;;123:50;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;150:5:0;:18;;-1:-1:-1;;;;;;150:18:0;158:10;150:18;;;34:311;;;;;;", + "deployedSourceMap": "34:311:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34:311:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;82:36;;;:::i;:::-;;;;;;;;;;;;;;;;58:20;;;:::i;:::-;;;;-1:-1:-1;;;;;58:20:0;;;;;;;;;;;;;;240:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;240:103:0;;:::i;:::-;;82:36;;;;:::o;58:20::-;;;-1:-1:-1;;;;;58:20:0;;:::o;240:103::-;223:5;;-1:-1:-1;;;;;223:5:0;209:10;:19;205:26;;;302:24;:36;;;205:26;240:103;:::o", "source": "pragma solidity >=0.4.21 <0.7.0;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n constructor() public {\n owner = msg.sender;\n }\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/Migrations.sol", "ast": { @@ -187,7 +187,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "158:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -271,7 +271,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "209:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -598,7 +598,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "158:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -682,7 +682,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7905, + "referencedDeclaration": 7827, "src": "209:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -890,18 +890,12 @@ "1": { "events": {}, "links": {}, - "address": "0xeA9246727f058547e86EE960c28843C854609738", - "transactionHash": "0x2bc31e7e264e3d4674940cbfd57d7b61d36229de78e28d43aec10a76b31637db" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab", - "transactionHash": "0x23ea7235f7481f6f8b177f5a43b92e53e37e96bb3e9a19572120b8bcf2894d13" + "address": "0x889E90Dfb0fb1F69598A3793137528D2ECe9b2f0", + "transactionHash": "0x0c3b9536278125aa05ea000768d5955e7acb3255c72265bf667cfb606764268c" } }, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-03T05:45:42.993Z", + "updatedAt": "2020-04-03T06:28:59.357Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/packages/smart-contracts/artifacts/SafeERC20.json b/packages/smart-contracts/artifacts/SafeERC20.json index 9dc894f..99ca577 100644 --- a/packages/smart-contracts/artifacts/SafeERC20.json +++ b/packages/smart-contracts/artifacts/SafeERC20.json @@ -1,9 +1,9 @@ { "contractName": "SafeERC20", "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", - "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bcd2bff52ae588fcdd691aca3d07a3421152819d9df6923d1c1d424f29a95c5264736f6c63430005100032", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bcd2bff52ae588fcdd691aca3d07a3421152819d9df6923d1c1d424f29a95c5264736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"methods\":{},\"title\":\"SafeERC20\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/ISafeERC20.sol\":{\"keccak256\":\"0xec78efb83d1275fbeb9d431938447eaabbff72deea196deea04b4873ee5a9f54\",\"urls\":[\"bzz-raw://7b50edf0121dc6286c5b93fd7ddc85edfbb719c91faf3ffd22957436c5b4763c\",\"dweb:/ipfs/QmSRUJaEp3QP71SG1V668qzXAzEj7YezhJ6AKdNqunH6dj\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582029f3e294b7cb7aef0fa378d9c6c922d700420d041124cfceaba9d1c77e2f7a1964736f6c63430005100032", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582029f3e294b7cb7aef0fa378d9c6c922d700420d041124cfceaba9d1c77e2f7a1964736f6c63430005100032", "sourceMap": "611:3189:2:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24", "deployedSourceMap": "611:3189:2:-;;;;;;;;", "source": "pragma solidity 0.5.16;\n\nimport \"./IERC20.sol\";\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using SafeMath for uint256;\n using Address for address;\n\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n function safeApprove(IERC20 token, address spender, uint256 value) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n // solhint-disable-next-line max-line-length\n require((value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).sub(value, \"SafeERC20: decreased allowance below zero\");\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves.\n\n // A Solidity high level call has three parts:\n // 1. The target address is checked to verify it contains contract code\n // 2. The call itself is made, and success asserted\n // 3. The return value is decoded, which in turn checks the size of the returned data.\n // solhint-disable-next-line max-line-length\n require(address(token).isContract(), \"SafeERC20: call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = address(token).call(data);\n require(success, \"SafeERC20: low-level call failed\");\n\n if (returndata.length > 0) { // Return data is optional\n // solhint-disable-next-line max-line-length\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}\n", @@ -45,7 +45,7 @@ "id": 124, "nodeType": "ImportDirective", "scope": 341, - "sourceUnit": 7816, + "sourceUnit": 7738, "src": "49:51:2", "symbolAliases": [], "unitAlias": "" @@ -56,7 +56,7 @@ "id": 125, "nodeType": "ImportDirective", "scope": 341, - "sourceUnit": 7891, + "sourceUnit": 7813, "src": "101:51:2", "symbolAliases": [], "unitAlias": "" @@ -81,10 +81,10 @@ "id": 126, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7815, + "referencedDeclaration": 7737, "src": "641:8:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$7815", + "typeIdentifier": "t_contract$_SafeMath_$7737", "typeString": "library SafeMath" } }, @@ -108,10 +108,10 @@ "id": 129, "name": "Address", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7890, + "referencedDeclaration": 7812, "src": "673:7:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$7890", + "typeIdentifier": "t_contract$_Address_$7812", "typeString": "library Address" } }, @@ -248,7 +248,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "807:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -569,7 +569,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "1005:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -897,7 +897,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7927, + "referencedDeclaration": 7849, "src": "1492:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$340", @@ -1085,10 +1085,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1443:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1226,7 +1226,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "1629:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -1486,7 +1486,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7927, + "referencedDeclaration": 7849, "src": "1848:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$340", @@ -1601,7 +1601,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 7655, + "referencedDeclaration": 7577, "src": "1824:43:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -1738,7 +1738,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "1910:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -2020,7 +2020,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7927, + "referencedDeclaration": 7849, "src": "2136:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$340", @@ -2135,7 +2135,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 7698, + "referencedDeclaration": 7620, "src": "2112:43:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -2272,7 +2272,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "2243:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -2530,7 +2530,7 @@ "lValueRequested": false, "memberName": "isContract", "nodeType": "MemberAccess", - "referencedDeclaration": 7842, + "referencedDeclaration": 7764, "src": "3298:25:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", @@ -2585,10 +2585,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3290:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2830,10 +2830,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3508:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -3004,7 +3004,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "3704:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -3073,10 +3073,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3696:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -3230,7 +3230,7 @@ "id": 124, "nodeType": "ImportDirective", "scope": 341, - "sourceUnit": 7816, + "sourceUnit": 7738, "src": "49:51:2", "symbolAliases": [], "unitAlias": "" @@ -3241,7 +3241,7 @@ "id": 125, "nodeType": "ImportDirective", "scope": 341, - "sourceUnit": 7891, + "sourceUnit": 7813, "src": "101:51:2", "symbolAliases": [], "unitAlias": "" @@ -3266,10 +3266,10 @@ "id": 126, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7815, + "referencedDeclaration": 7737, "src": "641:8:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$7815", + "typeIdentifier": "t_contract$_SafeMath_$7737", "typeString": "library SafeMath" } }, @@ -3293,10 +3293,10 @@ "id": 129, "name": "Address", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7890, + "referencedDeclaration": 7812, "src": "673:7:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$7890", + "typeIdentifier": "t_contract$_Address_$7812", "typeString": "library Address" } }, @@ -3433,7 +3433,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "807:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -3754,7 +3754,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "1005:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -4082,7 +4082,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7927, + "referencedDeclaration": 7849, "src": "1492:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$340", @@ -4270,10 +4270,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1443:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4411,7 +4411,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "1629:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -4671,7 +4671,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7927, + "referencedDeclaration": 7849, "src": "1848:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$340", @@ -4786,7 +4786,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 7655, + "referencedDeclaration": 7577, "src": "1824:43:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -4923,7 +4923,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "1910:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -5205,7 +5205,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7927, + "referencedDeclaration": 7849, "src": "2136:4:2", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$340", @@ -5320,7 +5320,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 7698, + "referencedDeclaration": 7620, "src": "2112:43:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -5457,7 +5457,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "2243:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -5715,7 +5715,7 @@ "lValueRequested": false, "memberName": "isContract", "nodeType": "MemberAccess", - "referencedDeclaration": 7842, + "referencedDeclaration": 7764, "src": "3298:25:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", @@ -5770,10 +5770,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3290:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6015,10 +6015,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3508:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6189,7 +6189,7 @@ "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7892, + "referencedDeclaration": 7814, "src": "3704:3:2", "typeDescriptions": { "typeIdentifier": "t_magic_abi", @@ -6258,10 +6258,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3696:7:2", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -6384,7 +6384,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.773Z", + "updatedAt": "2020-04-03T06:25:13.456Z", "devdoc": { "details": "Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.", "methods": {}, diff --git a/packages/smart-contracts/artifacts/SafeMath.json b/packages/smart-contracts/artifacts/SafeMath.json index 40287db..f841fdc 100644 --- a/packages/smart-contracts/artifacts/SafeMath.json +++ b/packages/smart-contracts/artifacts/SafeMath.json @@ -1,9 +1,9 @@ { "contractName": "SafeMath", "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]}},\"version\":1}", - "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ebf9bd1135b1bb19d9f96fcc8d0c8bdecee717ad8239722838766e283320042a64736f6c63430005100032", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ebf9bd1135b1bb19d9f96fcc8d0c8bdecee717ad8239722838766e283320042a64736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]}},\"version\":1}", + "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820f55816045dc6c831ea256759ca1946f54b0c4ee9cc6f98d832b7963096a8ab4864736f6c63430005100032", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820f55816045dc6c831ea256759ca1946f54b0c4ee9cc6f98d832b7963096a8ab4864736f6c63430005100032", "sourceMap": "589:4708:32:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24", "deployedSourceMap": "589:4708:32:-;;;;;;;;", "source": "pragma solidity ^0.5.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, \"SafeMath: subtraction overflow\");\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot overflow.\n *\n * _Available since v2.4.0._\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return div(a, b, \"SafeMath: division by zero\");\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0, errorMessage);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return mod(a, b, \"SafeMath: modulo by zero\");\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts with custom message when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b != 0, errorMessage);\n return a % b;\n }\n}\n", @@ -12,14 +12,14 @@ "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 7815 + 7737 ] }, - "id": 7816, + "id": 7738, "nodeType": "SourceUnit", "nodes": [ { - "id": 7630, + "id": 7552, "literals": [ "solidity", "^", @@ -35,30 +35,30 @@ "contractKind": "library", "documentation": "@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.", "fullyImplemented": true, - "id": 7815, + "id": 7737, "linearizedBaseContracts": [ - 7815 + 7737 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 7654, + "id": 7576, "nodeType": "Block", "src": "901:109:32", "statements": [ { "assignments": [ - 7640 + 7562 ], "declarations": [ { "constant": false, - "id": 7640, + "id": 7562, "name": "c", "nodeType": "VariableDeclaration", - "scope": 7654, + "scope": 7576, "src": "911:9:32", "stateVariable": false, "storageLocation": "default", @@ -67,7 +67,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7639, + "id": 7561, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "911:7:32", @@ -80,25 +80,25 @@ "visibility": "internal" } ], - "id": 7644, + "id": 7566, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7643, + "id": 7565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7641, + "id": 7563, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7632, + "referencedDeclaration": 7554, "src": "923:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -109,11 +109,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 7642, + "id": 7564, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7634, + "referencedDeclaration": 7556, "src": "927:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -139,18 +139,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7648, + "id": 7570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7646, + "id": 7568, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7640, + "referencedDeclaration": 7562, "src": "946:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -161,11 +161,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 7647, + "id": 7569, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7632, + "referencedDeclaration": 7554, "src": "951:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -181,7 +181,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", - "id": 7649, + "id": 7571, "isConstant": false, "isLValue": false, "isPure": true, @@ -208,21 +208,21 @@ "typeString": "literal_string \"SafeMath: addition overflow\"" } ], - "id": 7645, + "id": 7567, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "938:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7650, + "id": 7572, "isConstant": false, "isLValue": false, "isPure": false, @@ -236,48 +236,48 @@ "typeString": "tuple()" } }, - "id": 7651, + "id": 7573, "nodeType": "ExpressionStatement", "src": "938:46:32" }, { "expression": { "argumentTypes": null, - "id": 7652, + "id": 7574, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7640, + "referencedDeclaration": 7562, "src": "1002:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 7638, - "id": 7653, + "functionReturnParameters": 7560, + "id": 7575, "nodeType": "Return", "src": "995:8:32" } ] }, "documentation": "@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.", - "id": 7655, + "id": 7577, "implemented": true, "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 7635, + "id": 7557, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7632, + "id": 7554, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7655, + "scope": 7577, "src": "847:9:32", "stateVariable": false, "storageLocation": "default", @@ -286,7 +286,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7631, + "id": 7553, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "847:7:32", @@ -300,10 +300,10 @@ }, { "constant": false, - "id": 7634, + "id": 7556, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7655, + "scope": 7577, "src": "858:9:32", "stateVariable": false, "storageLocation": "default", @@ -312,7 +312,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7633, + "id": 7555, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "858:7:32", @@ -328,15 +328,15 @@ "src": "846:22:32" }, "returnParameters": { - "id": 7638, + "id": 7560, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7637, + "id": 7559, "name": "", "nodeType": "VariableDeclaration", - "scope": 7655, + "scope": 7577, "src": "892:7:32", "stateVariable": false, "storageLocation": "default", @@ -345,7 +345,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7636, + "id": 7558, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:32", @@ -360,7 +360,7 @@ ], "src": "891:9:32" }, - "scope": 7815, + "scope": 7737, "src": "834:176:32", "stateMutability": "pure", "superFunction": null, @@ -368,7 +368,7 @@ }, { "body": { - "id": 7670, + "id": 7592, "nodeType": "Block", "src": "1341:67:32", "statements": [ @@ -378,11 +378,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7665, + "id": 7587, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7657, + "referencedDeclaration": 7579, "src": "1362:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -391,11 +391,11 @@ }, { "argumentTypes": null, - "id": 7666, + "id": 7588, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7659, + "referencedDeclaration": 7581, "src": "1365:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -405,7 +405,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", - "id": 7667, + "id": 7589, "isConstant": false, "isLValue": false, "isPure": true, @@ -436,21 +436,21 @@ "typeString": "literal_string \"SafeMath: subtraction overflow\"" } ], - "id": 7664, + "id": 7586, "name": "sub", "nodeType": "Identifier", "overloadedDeclarations": [ - 7671, - 7698 + 7593, + 7620 ], - "referencedDeclaration": 7698, + "referencedDeclaration": 7620, "src": "1358:3:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 7668, + "id": 7590, "isConstant": false, "isLValue": false, "isPure": false, @@ -464,30 +464,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 7663, - "id": 7669, + "functionReturnParameters": 7585, + "id": 7591, "nodeType": "Return", "src": "1351:50:32" } ] }, "documentation": "@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.", - "id": 7671, + "id": 7593, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 7660, + "id": 7582, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7657, + "id": 7579, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7671, + "scope": 7593, "src": "1287:9:32", "stateVariable": false, "storageLocation": "default", @@ -496,7 +496,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7656, + "id": 7578, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1287:7:32", @@ -510,10 +510,10 @@ }, { "constant": false, - "id": 7659, + "id": 7581, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7671, + "scope": 7593, "src": "1298:9:32", "stateVariable": false, "storageLocation": "default", @@ -522,7 +522,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7658, + "id": 7580, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1298:7:32", @@ -538,15 +538,15 @@ "src": "1286:22:32" }, "returnParameters": { - "id": 7663, + "id": 7585, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7662, + "id": 7584, "name": "", "nodeType": "VariableDeclaration", - "scope": 7671, + "scope": 7593, "src": "1332:7:32", "stateVariable": false, "storageLocation": "default", @@ -555,7 +555,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7661, + "id": 7583, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1332:7:32", @@ -570,7 +570,7 @@ ], "src": "1331:9:32" }, - "scope": 7815, + "scope": 7737, "src": "1274:134:32", "stateMutability": "pure", "superFunction": null, @@ -578,7 +578,7 @@ }, { "body": { - "id": 7697, + "id": 7619, "nodeType": "Block", "src": "1827:92:32", "statements": [ @@ -592,18 +592,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7685, + "id": 7607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7683, + "id": 7605, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7675, + "referencedDeclaration": 7597, "src": "1845:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -614,11 +614,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 7684, + "id": 7606, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7673, + "referencedDeclaration": 7595, "src": "1850:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -633,11 +633,11 @@ }, { "argumentTypes": null, - "id": 7686, + "id": 7608, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7677, + "referencedDeclaration": 7599, "src": "1853:12:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -656,21 +656,21 @@ "typeString": "string memory" } ], - "id": 7682, + "id": 7604, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1837:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7687, + "id": 7609, "isConstant": false, "isLValue": false, "isPure": false, @@ -684,21 +684,21 @@ "typeString": "tuple()" } }, - "id": 7688, + "id": 7610, "nodeType": "ExpressionStatement", "src": "1837:29:32" }, { "assignments": [ - 7690 + 7612 ], "declarations": [ { "constant": false, - "id": 7690, + "id": 7612, "name": "c", "nodeType": "VariableDeclaration", - "scope": 7697, + "scope": 7619, "src": "1876:9:32", "stateVariable": false, "storageLocation": "default", @@ -707,7 +707,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7689, + "id": 7611, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1876:7:32", @@ -720,25 +720,25 @@ "visibility": "internal" } ], - "id": 7694, + "id": 7616, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7693, + "id": 7615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7691, + "id": 7613, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7673, + "referencedDeclaration": 7595, "src": "1888:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -749,11 +749,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 7692, + "id": 7614, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7675, + "referencedDeclaration": 7597, "src": "1892:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -772,41 +772,41 @@ { "expression": { "argumentTypes": null, - "id": 7695, + "id": 7617, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7690, + "referencedDeclaration": 7612, "src": "1911:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 7681, - "id": 7696, + "functionReturnParameters": 7603, + "id": 7618, "nodeType": "Return", "src": "1904:8:32" } ] }, "documentation": "@dev Returns the subtraction of two unsigned integers, reverting with custom message on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.\n * _Available since v2.4.0._", - "id": 7698, + "id": 7620, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 7678, + "id": 7600, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7673, + "id": 7595, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7698, + "scope": 7620, "src": "1745:9:32", "stateVariable": false, "storageLocation": "default", @@ -815,7 +815,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7672, + "id": 7594, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1745:7:32", @@ -829,10 +829,10 @@ }, { "constant": false, - "id": 7675, + "id": 7597, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7698, + "scope": 7620, "src": "1756:9:32", "stateVariable": false, "storageLocation": "default", @@ -841,7 +841,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7674, + "id": 7596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1756:7:32", @@ -855,10 +855,10 @@ }, { "constant": false, - "id": 7677, + "id": 7599, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 7698, + "scope": 7620, "src": "1767:26:32", "stateVariable": false, "storageLocation": "memory", @@ -867,7 +867,7 @@ "typeString": "string" }, "typeName": { - "id": 7676, + "id": 7598, "name": "string", "nodeType": "ElementaryTypeName", "src": "1767:6:32", @@ -883,15 +883,15 @@ "src": "1744:50:32" }, "returnParameters": { - "id": 7681, + "id": 7603, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7680, + "id": 7602, "name": "", "nodeType": "VariableDeclaration", - "scope": 7698, + "scope": 7620, "src": "1818:7:32", "stateVariable": false, "storageLocation": "default", @@ -900,7 +900,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7679, + "id": 7601, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1818:7:32", @@ -915,7 +915,7 @@ ], "src": "1817:9:32" }, - "scope": 7815, + "scope": 7737, "src": "1732:187:32", "stateMutability": "pure", "superFunction": null, @@ -923,7 +923,7 @@ }, { "body": { - "id": 7731, + "id": 7653, "nodeType": "Block", "src": "2226:392:32", "statements": [ @@ -934,18 +934,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7709, + "id": 7631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7707, + "id": 7629, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7700, + "referencedDeclaration": 7622, "src": "2458:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -957,7 +957,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7708, + "id": 7630, "isConstant": false, "isLValue": false, "isPure": true, @@ -979,11 +979,11 @@ } }, "falseBody": null, - "id": 7713, + "id": 7635, "nodeType": "IfStatement", "src": "2454:45:32", "trueBody": { - "id": 7712, + "id": 7634, "nodeType": "Block", "src": "2466:33:32", "statements": [ @@ -991,7 +991,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 7710, + "id": 7632, "isConstant": false, "isLValue": false, "isPure": true, @@ -1006,8 +1006,8 @@ }, "value": "0" }, - "functionReturnParameters": 7706, - "id": 7711, + "functionReturnParameters": 7628, + "id": 7633, "nodeType": "Return", "src": "2480:8:32" } @@ -1016,15 +1016,15 @@ }, { "assignments": [ - 7715 + 7637 ], "declarations": [ { "constant": false, - "id": 7715, + "id": 7637, "name": "c", "nodeType": "VariableDeclaration", - "scope": 7731, + "scope": 7653, "src": "2509:9:32", "stateVariable": false, "storageLocation": "default", @@ -1033,7 +1033,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7714, + "id": 7636, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2509:7:32", @@ -1046,25 +1046,25 @@ "visibility": "internal" } ], - "id": 7719, + "id": 7641, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7718, + "id": 7640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7716, + "id": 7638, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7700, + "referencedDeclaration": 7622, "src": "2521:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1075,11 +1075,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 7717, + "id": 7639, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7702, + "referencedDeclaration": 7624, "src": "2525:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1105,7 +1105,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7725, + "id": 7647, "isConstant": false, "isLValue": false, "isPure": false, @@ -1116,18 +1116,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7723, + "id": 7645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7721, + "id": 7643, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7715, + "referencedDeclaration": 7637, "src": "2544:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1138,11 +1138,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 7722, + "id": 7644, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7700, + "referencedDeclaration": 7622, "src": "2548:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1159,11 +1159,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 7724, + "id": 7646, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7702, + "referencedDeclaration": 7624, "src": "2553:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1179,7 +1179,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", - "id": 7726, + "id": 7648, "isConstant": false, "isLValue": false, "isPure": true, @@ -1206,21 +1206,21 @@ "typeString": "literal_string \"SafeMath: multiplication overflow\"" } ], - "id": 7720, + "id": 7642, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2536:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7727, + "id": 7649, "isConstant": false, "isLValue": false, "isPure": false, @@ -1234,48 +1234,48 @@ "typeString": "tuple()" } }, - "id": 7728, + "id": 7650, "nodeType": "ExpressionStatement", "src": "2536:56:32" }, { "expression": { "argumentTypes": null, - "id": 7729, + "id": 7651, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7715, + "referencedDeclaration": 7637, "src": "2610:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 7706, - "id": 7730, + "functionReturnParameters": 7628, + "id": 7652, "nodeType": "Return", "src": "2603:8:32" } ] }, "documentation": "@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.", - "id": 7732, + "id": 7654, "implemented": true, "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 7703, + "id": 7625, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7700, + "id": 7622, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7732, + "scope": 7654, "src": "2172:9:32", "stateVariable": false, "storageLocation": "default", @@ -1284,7 +1284,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7699, + "id": 7621, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2172:7:32", @@ -1298,10 +1298,10 @@ }, { "constant": false, - "id": 7702, + "id": 7624, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7732, + "scope": 7654, "src": "2183:9:32", "stateVariable": false, "storageLocation": "default", @@ -1310,7 +1310,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7701, + "id": 7623, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2183:7:32", @@ -1326,15 +1326,15 @@ "src": "2171:22:32" }, "returnParameters": { - "id": 7706, + "id": 7628, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7705, + "id": 7627, "name": "", "nodeType": "VariableDeclaration", - "scope": 7732, + "scope": 7654, "src": "2217:7:32", "stateVariable": false, "storageLocation": "default", @@ -1343,7 +1343,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7704, + "id": 7626, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2217:7:32", @@ -1358,7 +1358,7 @@ ], "src": "2216:9:32" }, - "scope": 7815, + "scope": 7737, "src": "2159:459:32", "stateMutability": "pure", "superFunction": null, @@ -1366,7 +1366,7 @@ }, { "body": { - "id": 7747, + "id": 7669, "nodeType": "Block", "src": "3140:63:32", "statements": [ @@ -1376,11 +1376,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7742, + "id": 7664, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7734, + "referencedDeclaration": 7656, "src": "3161:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1389,11 +1389,11 @@ }, { "argumentTypes": null, - "id": 7743, + "id": 7665, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7736, + "referencedDeclaration": 7658, "src": "3164:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1403,7 +1403,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", - "id": 7744, + "id": 7666, "isConstant": false, "isLValue": false, "isPure": true, @@ -1434,21 +1434,21 @@ "typeString": "literal_string \"SafeMath: division by zero\"" } ], - "id": 7741, + "id": 7663, "name": "div", "nodeType": "Identifier", "overloadedDeclarations": [ - 7748, - 7775 + 7670, + 7697 ], - "referencedDeclaration": 7775, + "referencedDeclaration": 7697, "src": "3157:3:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 7745, + "id": 7667, "isConstant": false, "isLValue": false, "isPure": false, @@ -1462,30 +1462,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 7740, - "id": 7746, + "functionReturnParameters": 7662, + "id": 7668, "nodeType": "Return", "src": "3150:46:32" } ] }, "documentation": "@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", - "id": 7748, + "id": 7670, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 7737, + "id": 7659, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7734, + "id": 7656, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7748, + "scope": 7670, "src": "3086:9:32", "stateVariable": false, "storageLocation": "default", @@ -1494,7 +1494,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7733, + "id": 7655, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3086:7:32", @@ -1508,10 +1508,10 @@ }, { "constant": false, - "id": 7736, + "id": 7658, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7748, + "scope": 7670, "src": "3097:9:32", "stateVariable": false, "storageLocation": "default", @@ -1520,7 +1520,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7735, + "id": 7657, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3097:7:32", @@ -1536,15 +1536,15 @@ "src": "3085:22:32" }, "returnParameters": { - "id": 7740, + "id": 7662, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7739, + "id": 7661, "name": "", "nodeType": "VariableDeclaration", - "scope": 7748, + "scope": 7670, "src": "3131:7:32", "stateVariable": false, "storageLocation": "default", @@ -1553,7 +1553,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7738, + "id": 7660, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3131:7:32", @@ -1568,7 +1568,7 @@ ], "src": "3130:9:32" }, - "scope": 7815, + "scope": 7737, "src": "3073:130:32", "stateMutability": "pure", "superFunction": null, @@ -1576,7 +1576,7 @@ }, { "body": { - "id": 7774, + "id": 7696, "nodeType": "Block", "src": "3813:243:32", "statements": [ @@ -1590,18 +1590,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7762, + "id": 7684, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7760, + "id": 7682, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7752, + "referencedDeclaration": 7674, "src": "3897:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1613,7 +1613,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7761, + "id": 7683, "isConstant": false, "isLValue": false, "isPure": true, @@ -1636,11 +1636,11 @@ }, { "argumentTypes": null, - "id": 7763, + "id": 7685, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7754, + "referencedDeclaration": 7676, "src": "3904:12:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -1659,21 +1659,21 @@ "typeString": "string memory" } ], - "id": 7759, + "id": 7681, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3889:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7764, + "id": 7686, "isConstant": false, "isLValue": false, "isPure": false, @@ -1687,21 +1687,21 @@ "typeString": "tuple()" } }, - "id": 7765, + "id": 7687, "nodeType": "ExpressionStatement", "src": "3889:28:32" }, { "assignments": [ - 7767 + 7689 ], "declarations": [ { "constant": false, - "id": 7767, + "id": 7689, "name": "c", "nodeType": "VariableDeclaration", - "scope": 7774, + "scope": 7696, "src": "3927:9:32", "stateVariable": false, "storageLocation": "default", @@ -1710,7 +1710,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7766, + "id": 7688, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3927:7:32", @@ -1723,25 +1723,25 @@ "visibility": "internal" } ], - "id": 7771, + "id": 7693, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7770, + "id": 7692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7768, + "id": 7690, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7750, + "referencedDeclaration": 7672, "src": "3939:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1752,11 +1752,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 7769, + "id": 7691, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7752, + "referencedDeclaration": 7674, "src": "3943:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1775,41 +1775,41 @@ { "expression": { "argumentTypes": null, - "id": 7772, + "id": 7694, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7767, + "referencedDeclaration": 7689, "src": "4048:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 7758, - "id": 7773, + "functionReturnParameters": 7680, + "id": 7695, "nodeType": "Return", "src": "4041:8:32" } ] }, "documentation": "@dev Returns the integer division of two unsigned integers. Reverts with custom message on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", - "id": 7775, + "id": 7697, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 7755, + "id": 7677, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7750, + "id": 7672, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7775, + "scope": 7697, "src": "3731:9:32", "stateVariable": false, "storageLocation": "default", @@ -1818,7 +1818,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7749, + "id": 7671, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3731:7:32", @@ -1832,10 +1832,10 @@ }, { "constant": false, - "id": 7752, + "id": 7674, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7775, + "scope": 7697, "src": "3742:9:32", "stateVariable": false, "storageLocation": "default", @@ -1844,7 +1844,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7751, + "id": 7673, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3742:7:32", @@ -1858,10 +1858,10 @@ }, { "constant": false, - "id": 7754, + "id": 7676, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 7775, + "scope": 7697, "src": "3753:26:32", "stateVariable": false, "storageLocation": "memory", @@ -1870,7 +1870,7 @@ "typeString": "string" }, "typeName": { - "id": 7753, + "id": 7675, "name": "string", "nodeType": "ElementaryTypeName", "src": "3753:6:32", @@ -1886,15 +1886,15 @@ "src": "3730:50:32" }, "returnParameters": { - "id": 7758, + "id": 7680, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7757, + "id": 7679, "name": "", "nodeType": "VariableDeclaration", - "scope": 7775, + "scope": 7697, "src": "3804:7:32", "stateVariable": false, "storageLocation": "default", @@ -1903,7 +1903,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7756, + "id": 7678, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3804:7:32", @@ -1918,7 +1918,7 @@ ], "src": "3803:9:32" }, - "scope": 7815, + "scope": 7737, "src": "3718:338:32", "stateMutability": "pure", "superFunction": null, @@ -1926,7 +1926,7 @@ }, { "body": { - "id": 7790, + "id": 7712, "nodeType": "Block", "src": "4567:61:32", "statements": [ @@ -1936,11 +1936,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7785, + "id": 7707, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7777, + "referencedDeclaration": 7699, "src": "4588:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1949,11 +1949,11 @@ }, { "argumentTypes": null, - "id": 7786, + "id": 7708, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7779, + "referencedDeclaration": 7701, "src": "4591:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1963,7 +1963,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", - "id": 7787, + "id": 7709, "isConstant": false, "isLValue": false, "isPure": true, @@ -1994,21 +1994,21 @@ "typeString": "literal_string \"SafeMath: modulo by zero\"" } ], - "id": 7784, + "id": 7706, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [ - 7791, - 7814 + 7713, + 7736 ], - "referencedDeclaration": 7814, + "referencedDeclaration": 7736, "src": "4584:3:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 7788, + "id": 7710, "isConstant": false, "isLValue": false, "isPure": false, @@ -2022,30 +2022,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 7783, - "id": 7789, + "functionReturnParameters": 7705, + "id": 7711, "nodeType": "Return", "src": "4577:44:32" } ] }, "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", - "id": 7791, + "id": 7713, "implemented": true, "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 7780, + "id": 7702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7777, + "id": 7699, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7791, + "scope": 7713, "src": "4513:9:32", "stateVariable": false, "storageLocation": "default", @@ -2054,7 +2054,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7776, + "id": 7698, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4513:7:32", @@ -2068,10 +2068,10 @@ }, { "constant": false, - "id": 7779, + "id": 7701, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7791, + "scope": 7713, "src": "4524:9:32", "stateVariable": false, "storageLocation": "default", @@ -2080,7 +2080,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7778, + "id": 7700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4524:7:32", @@ -2096,15 +2096,15 @@ "src": "4512:22:32" }, "returnParameters": { - "id": 7783, + "id": 7705, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7782, + "id": 7704, "name": "", "nodeType": "VariableDeclaration", - "scope": 7791, + "scope": 7713, "src": "4558:7:32", "stateVariable": false, "storageLocation": "default", @@ -2113,7 +2113,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7781, + "id": 7703, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4558:7:32", @@ -2128,7 +2128,7 @@ ], "src": "4557:9:32" }, - "scope": 7815, + "scope": 7737, "src": "4500:128:32", "stateMutability": "pure", "superFunction": null, @@ -2136,7 +2136,7 @@ }, { "body": { - "id": 7813, + "id": 7735, "nodeType": "Block", "src": "5227:68:32", "statements": [ @@ -2150,18 +2150,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7805, + "id": 7727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7803, + "id": 7725, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7795, + "referencedDeclaration": 7717, "src": "5245:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2173,7 +2173,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7804, + "id": 7726, "isConstant": false, "isLValue": false, "isPure": true, @@ -2196,11 +2196,11 @@ }, { "argumentTypes": null, - "id": 7806, + "id": 7728, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7797, + "referencedDeclaration": 7719, "src": "5253:12:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -2219,21 +2219,21 @@ "typeString": "string memory" } ], - "id": 7802, + "id": 7724, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "5237:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7807, + "id": 7729, "isConstant": false, "isLValue": false, "isPure": false, @@ -2247,7 +2247,7 @@ "typeString": "tuple()" } }, - "id": 7808, + "id": 7730, "nodeType": "ExpressionStatement", "src": "5237:29:32" }, @@ -2258,18 +2258,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7811, + "id": 7733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7809, + "id": 7731, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7793, + "referencedDeclaration": 7715, "src": "5283:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2280,11 +2280,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 7810, + "id": 7732, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7795, + "referencedDeclaration": 7717, "src": "5287:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2297,30 +2297,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 7801, - "id": 7812, + "functionReturnParameters": 7723, + "id": 7734, "nodeType": "Return", "src": "5276:12:32" } ] }, "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts with custom message when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", - "id": 7814, + "id": 7736, "implemented": true, "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 7798, + "id": 7720, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7793, + "id": 7715, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7814, + "scope": 7736, "src": "5145:9:32", "stateVariable": false, "storageLocation": "default", @@ -2329,7 +2329,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7792, + "id": 7714, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5145:7:32", @@ -2343,10 +2343,10 @@ }, { "constant": false, - "id": 7795, + "id": 7717, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7814, + "scope": 7736, "src": "5156:9:32", "stateVariable": false, "storageLocation": "default", @@ -2355,7 +2355,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7794, + "id": 7716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5156:7:32", @@ -2369,10 +2369,10 @@ }, { "constant": false, - "id": 7797, + "id": 7719, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 7814, + "scope": 7736, "src": "5167:26:32", "stateVariable": false, "storageLocation": "memory", @@ -2381,7 +2381,7 @@ "typeString": "string" }, "typeName": { - "id": 7796, + "id": 7718, "name": "string", "nodeType": "ElementaryTypeName", "src": "5167:6:32", @@ -2397,15 +2397,15 @@ "src": "5144:50:32" }, "returnParameters": { - "id": 7801, + "id": 7723, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7800, + "id": 7722, "name": "", "nodeType": "VariableDeclaration", - "scope": 7814, + "scope": 7736, "src": "5218:7:32", "stateVariable": false, "storageLocation": "default", @@ -2414,7 +2414,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7799, + "id": 7721, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5218:7:32", @@ -2429,14 +2429,14 @@ ], "src": "5217:9:32" }, - "scope": 7815, + "scope": 7737, "src": "5132:163:32", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 7816, + "scope": 7738, "src": "589:4708:32" } ], @@ -2446,14 +2446,14 @@ "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 7815 + 7737 ] }, - "id": 7816, + "id": 7738, "nodeType": "SourceUnit", "nodes": [ { - "id": 7630, + "id": 7552, "literals": [ "solidity", "^", @@ -2469,30 +2469,30 @@ "contractKind": "library", "documentation": "@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.", "fullyImplemented": true, - "id": 7815, + "id": 7737, "linearizedBaseContracts": [ - 7815 + 7737 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 7654, + "id": 7576, "nodeType": "Block", "src": "901:109:32", "statements": [ { "assignments": [ - 7640 + 7562 ], "declarations": [ { "constant": false, - "id": 7640, + "id": 7562, "name": "c", "nodeType": "VariableDeclaration", - "scope": 7654, + "scope": 7576, "src": "911:9:32", "stateVariable": false, "storageLocation": "default", @@ -2501,7 +2501,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7639, + "id": 7561, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "911:7:32", @@ -2514,25 +2514,25 @@ "visibility": "internal" } ], - "id": 7644, + "id": 7566, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7643, + "id": 7565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7641, + "id": 7563, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7632, + "referencedDeclaration": 7554, "src": "923:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2543,11 +2543,11 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 7642, + "id": 7564, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7634, + "referencedDeclaration": 7556, "src": "927:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2573,18 +2573,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7648, + "id": 7570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7646, + "id": 7568, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7640, + "referencedDeclaration": 7562, "src": "946:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2595,11 +2595,11 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 7647, + "id": 7569, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7632, + "referencedDeclaration": 7554, "src": "951:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2615,7 +2615,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", - "id": 7649, + "id": 7571, "isConstant": false, "isLValue": false, "isPure": true, @@ -2642,21 +2642,21 @@ "typeString": "literal_string \"SafeMath: addition overflow\"" } ], - "id": 7645, + "id": 7567, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "938:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7650, + "id": 7572, "isConstant": false, "isLValue": false, "isPure": false, @@ -2670,48 +2670,48 @@ "typeString": "tuple()" } }, - "id": 7651, + "id": 7573, "nodeType": "ExpressionStatement", "src": "938:46:32" }, { "expression": { "argumentTypes": null, - "id": 7652, + "id": 7574, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7640, + "referencedDeclaration": 7562, "src": "1002:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 7638, - "id": 7653, + "functionReturnParameters": 7560, + "id": 7575, "nodeType": "Return", "src": "995:8:32" } ] }, "documentation": "@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.", - "id": 7655, + "id": 7577, "implemented": true, "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 7635, + "id": 7557, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7632, + "id": 7554, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7655, + "scope": 7577, "src": "847:9:32", "stateVariable": false, "storageLocation": "default", @@ -2720,7 +2720,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7631, + "id": 7553, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "847:7:32", @@ -2734,10 +2734,10 @@ }, { "constant": false, - "id": 7634, + "id": 7556, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7655, + "scope": 7577, "src": "858:9:32", "stateVariable": false, "storageLocation": "default", @@ -2746,7 +2746,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7633, + "id": 7555, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "858:7:32", @@ -2762,15 +2762,15 @@ "src": "846:22:32" }, "returnParameters": { - "id": 7638, + "id": 7560, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7637, + "id": 7559, "name": "", "nodeType": "VariableDeclaration", - "scope": 7655, + "scope": 7577, "src": "892:7:32", "stateVariable": false, "storageLocation": "default", @@ -2779,7 +2779,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7636, + "id": 7558, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:32", @@ -2794,7 +2794,7 @@ ], "src": "891:9:32" }, - "scope": 7815, + "scope": 7737, "src": "834:176:32", "stateMutability": "pure", "superFunction": null, @@ -2802,7 +2802,7 @@ }, { "body": { - "id": 7670, + "id": 7592, "nodeType": "Block", "src": "1341:67:32", "statements": [ @@ -2812,11 +2812,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7665, + "id": 7587, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7657, + "referencedDeclaration": 7579, "src": "1362:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2825,11 +2825,11 @@ }, { "argumentTypes": null, - "id": 7666, + "id": 7588, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7659, + "referencedDeclaration": 7581, "src": "1365:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2839,7 +2839,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", - "id": 7667, + "id": 7589, "isConstant": false, "isLValue": false, "isPure": true, @@ -2870,21 +2870,21 @@ "typeString": "literal_string \"SafeMath: subtraction overflow\"" } ], - "id": 7664, + "id": 7586, "name": "sub", "nodeType": "Identifier", "overloadedDeclarations": [ - 7671, - 7698 + 7593, + 7620 ], - "referencedDeclaration": 7698, + "referencedDeclaration": 7620, "src": "1358:3:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 7668, + "id": 7590, "isConstant": false, "isLValue": false, "isPure": false, @@ -2898,30 +2898,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 7663, - "id": 7669, + "functionReturnParameters": 7585, + "id": 7591, "nodeType": "Return", "src": "1351:50:32" } ] }, "documentation": "@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.", - "id": 7671, + "id": 7593, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 7660, + "id": 7582, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7657, + "id": 7579, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7671, + "scope": 7593, "src": "1287:9:32", "stateVariable": false, "storageLocation": "default", @@ -2930,7 +2930,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7656, + "id": 7578, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1287:7:32", @@ -2944,10 +2944,10 @@ }, { "constant": false, - "id": 7659, + "id": 7581, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7671, + "scope": 7593, "src": "1298:9:32", "stateVariable": false, "storageLocation": "default", @@ -2956,7 +2956,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7658, + "id": 7580, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1298:7:32", @@ -2972,15 +2972,15 @@ "src": "1286:22:32" }, "returnParameters": { - "id": 7663, + "id": 7585, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7662, + "id": 7584, "name": "", "nodeType": "VariableDeclaration", - "scope": 7671, + "scope": 7593, "src": "1332:7:32", "stateVariable": false, "storageLocation": "default", @@ -2989,7 +2989,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7661, + "id": 7583, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1332:7:32", @@ -3004,7 +3004,7 @@ ], "src": "1331:9:32" }, - "scope": 7815, + "scope": 7737, "src": "1274:134:32", "stateMutability": "pure", "superFunction": null, @@ -3012,7 +3012,7 @@ }, { "body": { - "id": 7697, + "id": 7619, "nodeType": "Block", "src": "1827:92:32", "statements": [ @@ -3026,18 +3026,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7685, + "id": 7607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7683, + "id": 7605, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7675, + "referencedDeclaration": 7597, "src": "1845:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3048,11 +3048,11 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 7684, + "id": 7606, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7673, + "referencedDeclaration": 7595, "src": "1850:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3067,11 +3067,11 @@ }, { "argumentTypes": null, - "id": 7686, + "id": 7608, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7677, + "referencedDeclaration": 7599, "src": "1853:12:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -3090,21 +3090,21 @@ "typeString": "string memory" } ], - "id": 7682, + "id": 7604, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "1837:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7687, + "id": 7609, "isConstant": false, "isLValue": false, "isPure": false, @@ -3118,21 +3118,21 @@ "typeString": "tuple()" } }, - "id": 7688, + "id": 7610, "nodeType": "ExpressionStatement", "src": "1837:29:32" }, { "assignments": [ - 7690 + 7612 ], "declarations": [ { "constant": false, - "id": 7690, + "id": 7612, "name": "c", "nodeType": "VariableDeclaration", - "scope": 7697, + "scope": 7619, "src": "1876:9:32", "stateVariable": false, "storageLocation": "default", @@ -3141,7 +3141,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7689, + "id": 7611, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1876:7:32", @@ -3154,25 +3154,25 @@ "visibility": "internal" } ], - "id": 7694, + "id": 7616, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7693, + "id": 7615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7691, + "id": 7613, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7673, + "referencedDeclaration": 7595, "src": "1888:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3183,11 +3183,11 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 7692, + "id": 7614, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7675, + "referencedDeclaration": 7597, "src": "1892:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3206,41 +3206,41 @@ { "expression": { "argumentTypes": null, - "id": 7695, + "id": 7617, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7690, + "referencedDeclaration": 7612, "src": "1911:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 7681, - "id": 7696, + "functionReturnParameters": 7603, + "id": 7618, "nodeType": "Return", "src": "1904:8:32" } ] }, "documentation": "@dev Returns the subtraction of two unsigned integers, reverting with custom message on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.\n * _Available since v2.4.0._", - "id": 7698, + "id": 7620, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 7678, + "id": 7600, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7673, + "id": 7595, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7698, + "scope": 7620, "src": "1745:9:32", "stateVariable": false, "storageLocation": "default", @@ -3249,7 +3249,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7672, + "id": 7594, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1745:7:32", @@ -3263,10 +3263,10 @@ }, { "constant": false, - "id": 7675, + "id": 7597, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7698, + "scope": 7620, "src": "1756:9:32", "stateVariable": false, "storageLocation": "default", @@ -3275,7 +3275,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7674, + "id": 7596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1756:7:32", @@ -3289,10 +3289,10 @@ }, { "constant": false, - "id": 7677, + "id": 7599, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 7698, + "scope": 7620, "src": "1767:26:32", "stateVariable": false, "storageLocation": "memory", @@ -3301,7 +3301,7 @@ "typeString": "string" }, "typeName": { - "id": 7676, + "id": 7598, "name": "string", "nodeType": "ElementaryTypeName", "src": "1767:6:32", @@ -3317,15 +3317,15 @@ "src": "1744:50:32" }, "returnParameters": { - "id": 7681, + "id": 7603, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7680, + "id": 7602, "name": "", "nodeType": "VariableDeclaration", - "scope": 7698, + "scope": 7620, "src": "1818:7:32", "stateVariable": false, "storageLocation": "default", @@ -3334,7 +3334,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7679, + "id": 7601, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1818:7:32", @@ -3349,7 +3349,7 @@ ], "src": "1817:9:32" }, - "scope": 7815, + "scope": 7737, "src": "1732:187:32", "stateMutability": "pure", "superFunction": null, @@ -3357,7 +3357,7 @@ }, { "body": { - "id": 7731, + "id": 7653, "nodeType": "Block", "src": "2226:392:32", "statements": [ @@ -3368,18 +3368,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7709, + "id": 7631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7707, + "id": 7629, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7700, + "referencedDeclaration": 7622, "src": "2458:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3391,7 +3391,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7708, + "id": 7630, "isConstant": false, "isLValue": false, "isPure": true, @@ -3413,11 +3413,11 @@ } }, "falseBody": null, - "id": 7713, + "id": 7635, "nodeType": "IfStatement", "src": "2454:45:32", "trueBody": { - "id": 7712, + "id": 7634, "nodeType": "Block", "src": "2466:33:32", "statements": [ @@ -3425,7 +3425,7 @@ "expression": { "argumentTypes": null, "hexValue": "30", - "id": 7710, + "id": 7632, "isConstant": false, "isLValue": false, "isPure": true, @@ -3440,8 +3440,8 @@ }, "value": "0" }, - "functionReturnParameters": 7706, - "id": 7711, + "functionReturnParameters": 7628, + "id": 7633, "nodeType": "Return", "src": "2480:8:32" } @@ -3450,15 +3450,15 @@ }, { "assignments": [ - 7715 + 7637 ], "declarations": [ { "constant": false, - "id": 7715, + "id": 7637, "name": "c", "nodeType": "VariableDeclaration", - "scope": 7731, + "scope": 7653, "src": "2509:9:32", "stateVariable": false, "storageLocation": "default", @@ -3467,7 +3467,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7714, + "id": 7636, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2509:7:32", @@ -3480,25 +3480,25 @@ "visibility": "internal" } ], - "id": 7719, + "id": 7641, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7718, + "id": 7640, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7716, + "id": 7638, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7700, + "referencedDeclaration": 7622, "src": "2521:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3509,11 +3509,11 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 7717, + "id": 7639, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7702, + "referencedDeclaration": 7624, "src": "2525:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3539,7 +3539,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7725, + "id": 7647, "isConstant": false, "isLValue": false, "isPure": false, @@ -3550,18 +3550,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7723, + "id": 7645, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7721, + "id": 7643, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7715, + "referencedDeclaration": 7637, "src": "2544:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3572,11 +3572,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 7722, + "id": 7644, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7700, + "referencedDeclaration": 7622, "src": "2548:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3593,11 +3593,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 7724, + "id": 7646, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7702, + "referencedDeclaration": 7624, "src": "2553:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3613,7 +3613,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", - "id": 7726, + "id": 7648, "isConstant": false, "isLValue": false, "isPure": true, @@ -3640,21 +3640,21 @@ "typeString": "literal_string \"SafeMath: multiplication overflow\"" } ], - "id": 7720, + "id": 7642, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2536:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7727, + "id": 7649, "isConstant": false, "isLValue": false, "isPure": false, @@ -3668,48 +3668,48 @@ "typeString": "tuple()" } }, - "id": 7728, + "id": 7650, "nodeType": "ExpressionStatement", "src": "2536:56:32" }, { "expression": { "argumentTypes": null, - "id": 7729, + "id": 7651, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7715, + "referencedDeclaration": 7637, "src": "2610:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 7706, - "id": 7730, + "functionReturnParameters": 7628, + "id": 7652, "nodeType": "Return", "src": "2603:8:32" } ] }, "documentation": "@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.", - "id": 7732, + "id": 7654, "implemented": true, "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 7703, + "id": 7625, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7700, + "id": 7622, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7732, + "scope": 7654, "src": "2172:9:32", "stateVariable": false, "storageLocation": "default", @@ -3718,7 +3718,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7699, + "id": 7621, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2172:7:32", @@ -3732,10 +3732,10 @@ }, { "constant": false, - "id": 7702, + "id": 7624, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7732, + "scope": 7654, "src": "2183:9:32", "stateVariable": false, "storageLocation": "default", @@ -3744,7 +3744,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7701, + "id": 7623, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2183:7:32", @@ -3760,15 +3760,15 @@ "src": "2171:22:32" }, "returnParameters": { - "id": 7706, + "id": 7628, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7705, + "id": 7627, "name": "", "nodeType": "VariableDeclaration", - "scope": 7732, + "scope": 7654, "src": "2217:7:32", "stateVariable": false, "storageLocation": "default", @@ -3777,7 +3777,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7704, + "id": 7626, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2217:7:32", @@ -3792,7 +3792,7 @@ ], "src": "2216:9:32" }, - "scope": 7815, + "scope": 7737, "src": "2159:459:32", "stateMutability": "pure", "superFunction": null, @@ -3800,7 +3800,7 @@ }, { "body": { - "id": 7747, + "id": 7669, "nodeType": "Block", "src": "3140:63:32", "statements": [ @@ -3810,11 +3810,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7742, + "id": 7664, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7734, + "referencedDeclaration": 7656, "src": "3161:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3823,11 +3823,11 @@ }, { "argumentTypes": null, - "id": 7743, + "id": 7665, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7736, + "referencedDeclaration": 7658, "src": "3164:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3837,7 +3837,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", - "id": 7744, + "id": 7666, "isConstant": false, "isLValue": false, "isPure": true, @@ -3868,21 +3868,21 @@ "typeString": "literal_string \"SafeMath: division by zero\"" } ], - "id": 7741, + "id": 7663, "name": "div", "nodeType": "Identifier", "overloadedDeclarations": [ - 7748, - 7775 + 7670, + 7697 ], - "referencedDeclaration": 7775, + "referencedDeclaration": 7697, "src": "3157:3:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 7745, + "id": 7667, "isConstant": false, "isLValue": false, "isPure": false, @@ -3896,30 +3896,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 7740, - "id": 7746, + "functionReturnParameters": 7662, + "id": 7668, "nodeType": "Return", "src": "3150:46:32" } ] }, "documentation": "@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", - "id": 7748, + "id": 7670, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 7737, + "id": 7659, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7734, + "id": 7656, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7748, + "scope": 7670, "src": "3086:9:32", "stateVariable": false, "storageLocation": "default", @@ -3928,7 +3928,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7733, + "id": 7655, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3086:7:32", @@ -3942,10 +3942,10 @@ }, { "constant": false, - "id": 7736, + "id": 7658, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7748, + "scope": 7670, "src": "3097:9:32", "stateVariable": false, "storageLocation": "default", @@ -3954,7 +3954,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7735, + "id": 7657, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3097:7:32", @@ -3970,15 +3970,15 @@ "src": "3085:22:32" }, "returnParameters": { - "id": 7740, + "id": 7662, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7739, + "id": 7661, "name": "", "nodeType": "VariableDeclaration", - "scope": 7748, + "scope": 7670, "src": "3131:7:32", "stateVariable": false, "storageLocation": "default", @@ -3987,7 +3987,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7738, + "id": 7660, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3131:7:32", @@ -4002,7 +4002,7 @@ ], "src": "3130:9:32" }, - "scope": 7815, + "scope": 7737, "src": "3073:130:32", "stateMutability": "pure", "superFunction": null, @@ -4010,7 +4010,7 @@ }, { "body": { - "id": 7774, + "id": 7696, "nodeType": "Block", "src": "3813:243:32", "statements": [ @@ -4024,18 +4024,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7762, + "id": 7684, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7760, + "id": 7682, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7752, + "referencedDeclaration": 7674, "src": "3897:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4047,7 +4047,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7761, + "id": 7683, "isConstant": false, "isLValue": false, "isPure": true, @@ -4070,11 +4070,11 @@ }, { "argumentTypes": null, - "id": 7763, + "id": 7685, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7754, + "referencedDeclaration": 7676, "src": "3904:12:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -4093,21 +4093,21 @@ "typeString": "string memory" } ], - "id": 7759, + "id": 7681, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3889:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7764, + "id": 7686, "isConstant": false, "isLValue": false, "isPure": false, @@ -4121,21 +4121,21 @@ "typeString": "tuple()" } }, - "id": 7765, + "id": 7687, "nodeType": "ExpressionStatement", "src": "3889:28:32" }, { "assignments": [ - 7767 + 7689 ], "declarations": [ { "constant": false, - "id": 7767, + "id": 7689, "name": "c", "nodeType": "VariableDeclaration", - "scope": 7774, + "scope": 7696, "src": "3927:9:32", "stateVariable": false, "storageLocation": "default", @@ -4144,7 +4144,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7766, + "id": 7688, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3927:7:32", @@ -4157,25 +4157,25 @@ "visibility": "internal" } ], - "id": 7771, + "id": 7693, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7770, + "id": 7692, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7768, + "id": 7690, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7750, + "referencedDeclaration": 7672, "src": "3939:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4186,11 +4186,11 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 7769, + "id": 7691, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7752, + "referencedDeclaration": 7674, "src": "3943:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4209,41 +4209,41 @@ { "expression": { "argumentTypes": null, - "id": 7772, + "id": 7694, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7767, + "referencedDeclaration": 7689, "src": "4048:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 7758, - "id": 7773, + "functionReturnParameters": 7680, + "id": 7695, "nodeType": "Return", "src": "4041:8:32" } ] }, "documentation": "@dev Returns the integer division of two unsigned integers. Reverts with custom message on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", - "id": 7775, + "id": 7697, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 7755, + "id": 7677, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7750, + "id": 7672, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7775, + "scope": 7697, "src": "3731:9:32", "stateVariable": false, "storageLocation": "default", @@ -4252,7 +4252,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7749, + "id": 7671, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3731:7:32", @@ -4266,10 +4266,10 @@ }, { "constant": false, - "id": 7752, + "id": 7674, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7775, + "scope": 7697, "src": "3742:9:32", "stateVariable": false, "storageLocation": "default", @@ -4278,7 +4278,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7751, + "id": 7673, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3742:7:32", @@ -4292,10 +4292,10 @@ }, { "constant": false, - "id": 7754, + "id": 7676, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 7775, + "scope": 7697, "src": "3753:26:32", "stateVariable": false, "storageLocation": "memory", @@ -4304,7 +4304,7 @@ "typeString": "string" }, "typeName": { - "id": 7753, + "id": 7675, "name": "string", "nodeType": "ElementaryTypeName", "src": "3753:6:32", @@ -4320,15 +4320,15 @@ "src": "3730:50:32" }, "returnParameters": { - "id": 7758, + "id": 7680, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7757, + "id": 7679, "name": "", "nodeType": "VariableDeclaration", - "scope": 7775, + "scope": 7697, "src": "3804:7:32", "stateVariable": false, "storageLocation": "default", @@ -4337,7 +4337,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7756, + "id": 7678, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3804:7:32", @@ -4352,7 +4352,7 @@ ], "src": "3803:9:32" }, - "scope": 7815, + "scope": 7737, "src": "3718:338:32", "stateMutability": "pure", "superFunction": null, @@ -4360,7 +4360,7 @@ }, { "body": { - "id": 7790, + "id": 7712, "nodeType": "Block", "src": "4567:61:32", "statements": [ @@ -4370,11 +4370,11 @@ "arguments": [ { "argumentTypes": null, - "id": 7785, + "id": 7707, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7777, + "referencedDeclaration": 7699, "src": "4588:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4383,11 +4383,11 @@ }, { "argumentTypes": null, - "id": 7786, + "id": 7708, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7779, + "referencedDeclaration": 7701, "src": "4591:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4397,7 +4397,7 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", - "id": 7787, + "id": 7709, "isConstant": false, "isLValue": false, "isPure": true, @@ -4428,21 +4428,21 @@ "typeString": "literal_string \"SafeMath: modulo by zero\"" } ], - "id": 7784, + "id": 7706, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [ - 7791, - 7814 + 7713, + 7736 ], - "referencedDeclaration": 7814, + "referencedDeclaration": 7736, "src": "4584:3:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 7788, + "id": 7710, "isConstant": false, "isLValue": false, "isPure": false, @@ -4456,30 +4456,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 7783, - "id": 7789, + "functionReturnParameters": 7705, + "id": 7711, "nodeType": "Return", "src": "4577:44:32" } ] }, "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", - "id": 7791, + "id": 7713, "implemented": true, "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 7780, + "id": 7702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7777, + "id": 7699, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7791, + "scope": 7713, "src": "4513:9:32", "stateVariable": false, "storageLocation": "default", @@ -4488,7 +4488,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7776, + "id": 7698, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4513:7:32", @@ -4502,10 +4502,10 @@ }, { "constant": false, - "id": 7779, + "id": 7701, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7791, + "scope": 7713, "src": "4524:9:32", "stateVariable": false, "storageLocation": "default", @@ -4514,7 +4514,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7778, + "id": 7700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4524:7:32", @@ -4530,15 +4530,15 @@ "src": "4512:22:32" }, "returnParameters": { - "id": 7783, + "id": 7705, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7782, + "id": 7704, "name": "", "nodeType": "VariableDeclaration", - "scope": 7791, + "scope": 7713, "src": "4558:7:32", "stateVariable": false, "storageLocation": "default", @@ -4547,7 +4547,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7781, + "id": 7703, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4558:7:32", @@ -4562,7 +4562,7 @@ ], "src": "4557:9:32" }, - "scope": 7815, + "scope": 7737, "src": "4500:128:32", "stateMutability": "pure", "superFunction": null, @@ -4570,7 +4570,7 @@ }, { "body": { - "id": 7813, + "id": 7735, "nodeType": "Block", "src": "5227:68:32", "statements": [ @@ -4584,18 +4584,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7805, + "id": 7727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7803, + "id": 7725, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7795, + "referencedDeclaration": 7717, "src": "5245:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4607,7 +4607,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 7804, + "id": 7726, "isConstant": false, "isLValue": false, "isPure": true, @@ -4630,11 +4630,11 @@ }, { "argumentTypes": null, - "id": 7806, + "id": 7728, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7797, + "referencedDeclaration": 7719, "src": "5253:12:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", @@ -4653,21 +4653,21 @@ "typeString": "string memory" } ], - "id": 7802, + "id": 7724, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "5237:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 7807, + "id": 7729, "isConstant": false, "isLValue": false, "isPure": false, @@ -4681,7 +4681,7 @@ "typeString": "tuple()" } }, - "id": 7808, + "id": 7730, "nodeType": "ExpressionStatement", "src": "5237:29:32" }, @@ -4692,18 +4692,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 7811, + "id": 7733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 7809, + "id": 7731, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7793, + "referencedDeclaration": 7715, "src": "5283:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4714,11 +4714,11 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 7810, + "id": 7732, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7795, + "referencedDeclaration": 7717, "src": "5287:1:32", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4731,30 +4731,30 @@ "typeString": "uint256" } }, - "functionReturnParameters": 7801, - "id": 7812, + "functionReturnParameters": 7723, + "id": 7734, "nodeType": "Return", "src": "5276:12:32" } ] }, "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts with custom message when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", - "id": 7814, + "id": 7736, "implemented": true, "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 7798, + "id": 7720, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7793, + "id": 7715, "name": "a", "nodeType": "VariableDeclaration", - "scope": 7814, + "scope": 7736, "src": "5145:9:32", "stateVariable": false, "storageLocation": "default", @@ -4763,7 +4763,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7792, + "id": 7714, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5145:7:32", @@ -4777,10 +4777,10 @@ }, { "constant": false, - "id": 7795, + "id": 7717, "name": "b", "nodeType": "VariableDeclaration", - "scope": 7814, + "scope": 7736, "src": "5156:9:32", "stateVariable": false, "storageLocation": "default", @@ -4789,7 +4789,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7794, + "id": 7716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5156:7:32", @@ -4803,10 +4803,10 @@ }, { "constant": false, - "id": 7797, + "id": 7719, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 7814, + "scope": 7736, "src": "5167:26:32", "stateVariable": false, "storageLocation": "memory", @@ -4815,7 +4815,7 @@ "typeString": "string" }, "typeName": { - "id": 7796, + "id": 7718, "name": "string", "nodeType": "ElementaryTypeName", "src": "5167:6:32", @@ -4831,15 +4831,15 @@ "src": "5144:50:32" }, "returnParameters": { - "id": 7801, + "id": 7723, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 7800, + "id": 7722, "name": "", "nodeType": "VariableDeclaration", - "scope": 7814, + "scope": 7736, "src": "5218:7:32", "stateVariable": false, "storageLocation": "default", @@ -4848,7 +4848,7 @@ "typeString": "uint256" }, "typeName": { - "id": 7799, + "id": 7721, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5218:7:32", @@ -4863,14 +4863,14 @@ ], "src": "5217:9:32" }, - "scope": 7815, + "scope": 7737, "src": "5132:163:32", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 7816, + "scope": 7738, "src": "589:4708:32" } ], @@ -4882,7 +4882,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.965Z", + "updatedAt": "2020-04-03T06:25:13.652Z", "devdoc": { "details": "Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.", "methods": {} diff --git a/packages/smart-contracts/artifacts/UniswapBase.json b/packages/smart-contracts/artifacts/UniswapBase.json index f6736d3..ca2097a 100644 --- a/packages/smart-contracts/artifacts/UniswapBase.json +++ b/packages/smart-contracts/artifacts/UniswapBase.json @@ -85,11 +85,11 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ethAmount\",\"type\":\"uint256\"}],\"name\":\"getEthToTokenInputPriceFromUniswap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenToEthInputPriceFromUniswap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fromAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenToTokenPriceFromUniswap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol\":\"UniswapBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol\":{\"keccak256\":\"0x2f6d78b485392995fd2deb695a6983e82971feaf2ba629474d4ee0c5ee769614\",\"urls\":[\"bzz-raw://feca374d541b17754aecc30a9a5312de3ad406597df1d4c8b4f123bb8bca8036\",\"dweb:/ipfs/QmYdtfcTp4Dvozfa3PpLaWTxg8WnzQiie2cVnq5QPUD1CJ\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b506103f5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063279ba926146100465780635f56a39a146100a8578063cede07831461012a575b600080fd5b6100926004803603604081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061018c565b6040518082815260200191505060405180910390f35b610114600480360360608110156100be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061022a565b6040518082815260200191505060405180910390f35b6101766004803603604081101561014057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061024d565b6040518082815260200191505060405180910390f35b6000610197836102eb565b73ffffffffffffffffffffffffffffffffffffffff1663cd7724c3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101e757600080fd5b505afa1580156101fb573d6000803e3d6000fd5b505050506040513d602081101561021157600080fd5b8101908080519060200190929190505050905092915050565b600080610237858461024d565b9050610243848261018c565b9150509392505050565b6000610258836102eb565b73ffffffffffffffffffffffffffffffffffffffff166395b68fe7836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156102a857600080fd5b505afa1580156102bc573d6000803e3d6000fd5b505050506040513d60208110156102d257600080fd5b8101908080519060200190929190505050905092915050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561037e57600080fd5b505afa158015610392573d6000803e3d6000fd5b505050506040513d60208110156103a857600080fd5b8101908080519060200190929190505050905091905056fea265627a7a72315820c70b46b6555aa459ab92b05bbbefbf4fd005c605d6e35990479af908192bf87264736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063279ba926146100465780635f56a39a146100a8578063cede07831461012a575b600080fd5b6100926004803603604081101561005c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061018c565b6040518082815260200191505060405180910390f35b610114600480360360608110156100be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061022a565b6040518082815260200191505060405180910390f35b6101766004803603604081101561014057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061024d565b6040518082815260200191505060405180910390f35b6000610197836102eb565b73ffffffffffffffffffffffffffffffffffffffff1663cd7724c3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101e757600080fd5b505afa1580156101fb573d6000803e3d6000fd5b505050506040513d602081101561021157600080fd5b8101908080519060200190929190505050905092915050565b600080610237858461024d565b9050610243848261018c565b9150509392505050565b6000610258836102eb565b73ffffffffffffffffffffffffffffffffffffffff166395b68fe7836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156102a857600080fd5b505afa1580156102bc573d6000803e3d6000fd5b505050506040513d60208110156102d257600080fd5b8101908080519060200190929190505050905092915050565b600073c0a47dfe034b400b47bdad5fecda2621de6c4d9573ffffffffffffffffffffffffffffffffffffffff166306f2bf62836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561037e57600080fd5b505afa158015610392573d6000803e3d6000fd5b505050506040513d60208110156103a857600080fd5b8101908080519060200190929190505050905091905056fea265627a7a72315820c70b46b6555aa459ab92b05bbbefbf4fd005c605d6e35990479af908192bf87264736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ethAmount\",\"type\":\"uint256\"}],\"name\":\"getEthToTokenInputPriceFromUniswap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenToEthInputPriceFromUniswap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fromAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenToTokenPriceFromUniswap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol\":\"UniswapBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol\":{\"keccak256\":\"0x2f6d78b485392995fd2deb695a6983e82971feaf2ba629474d4ee0c5ee769614\",\"urls\":[\"bzz-raw://feca374d541b17754aecc30a9a5312de3ad406597df1d4c8b4f123bb8bca8036\",\"dweb:/ipfs/QmYdtfcTp4Dvozfa3PpLaWTxg8WnzQiie2cVnq5QPUD1CJ\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5061029c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063279ba926146100465780635f56a39a14610084578063cede0783146100ba575b600080fd5b6100726004803603604081101561005c57600080fd5b506001600160a01b0381351690602001356100e6565b60408051918252519081900360200190f35b6100726004803603606081101561009a57600080fd5b506001600160a01b03813581169160208101359091169060400135610167565b610072600480360360408110156100d057600080fd5b506001600160a01b038135169060200135610189565b60006100f1836101d7565b6001600160a01b031663cd7724c3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561013457600080fd5b505afa158015610148573d6000803e3d6000fd5b505050506040513d602081101561015e57600080fd5b50519392505050565b6000806101748584610189565b905061018084826100e6565b95945050505050565b6000610194836101d7565b6001600160a01b03166395b68fe7836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561013457600080fd5b604080516303795fb160e11b81526001600160a01b0383166004820152905160009173c0a47dfe034b400b47bdad5fecda2621de6c4d95916306f2bf6291602480820192602092909190829003018186803b15801561023557600080fd5b505afa158015610249573d6000803e3d6000fd5b505050506040513d602081101561025f57600080fd5b50519291505056fea265627a7a7231582079a495b1b99289945db382b676d37cce3a892a1293891a6351611188c9bf0c3864736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063279ba926146100465780635f56a39a14610084578063cede0783146100ba575b600080fd5b6100726004803603604081101561005c57600080fd5b506001600160a01b0381351690602001356100e6565b60408051918252519081900360200190f35b6100726004803603606081101561009a57600080fd5b506001600160a01b03813581169160208101359091169060400135610167565b610072600480360360408110156100d057600080fd5b506001600160a01b038135169060200135610189565b60006100f1836101d7565b6001600160a01b031663cd7724c3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561013457600080fd5b505afa158015610148573d6000803e3d6000fd5b505050506040513d602081101561015e57600080fd5b50519392505050565b6000806101748584610189565b905061018084826100e6565b95945050505050565b6000610194836101d7565b6001600160a01b03166395b68fe7836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561013457600080fd5b604080516303795fb160e11b81526001600160a01b0383166004820152905160009173c0a47dfe034b400b47bdad5fecda2621de6c4d95916306f2bf6291602480820192602092909190829003018186803b15801561023557600080fd5b505afa158015610249573d6000803e3d6000fd5b505050506040513d602081101561025f57600080fd5b50519291505056fea265627a7a7231582079a495b1b99289945db382b676d37cce3a892a1293891a6351611188c9bf0c3864736f6c63430005100032", "sourceMap": "177:2192:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;177:2192:23;;;;;;;", - "deployedSourceMap": "177:2192:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;177:2192:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1879:219;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1879:219:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2104:263;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2104:263:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1650:223;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1650:223:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1879:219;1982:4;2022:33;2042:12;2022:19;:33::i;:::-;2005:75;;;2081:9;2005:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2005:86:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2005:86:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2005:86:23;;;;;;;;;;;;;;;;1998:93;;1879:219;;;;:::o;2104:263::-;2209:4;2225:14;2242:52;2277:4;2283:10;2242:34;:52::i;:::-;2225:69;;2311:49;2346:2;2350:9;2311:34;:49::i;:::-;2304:56;;;2104:263;;;;;:::o;1650:223::-;1755:4;1795:33;1815:12;1795:19;:33::i;:::-;1778:75;;;1854:11;1778:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:88:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1778:88:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1778:88:23;;;;;;;;;;;;;;;;1771:95;;1650:223;;;;:::o;333:171::-;407:7;284:42;433:50;;;484:12;433:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;433:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;433:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;433:64:23;;;;;;;;;;;;;;;;426:71;;333:171;;;:::o", + "deployedSourceMap": "177:2192:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;177:2192:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1879:219;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1879:219:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2104:263;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2104:263:23;;;;;;;;;;;;;;;;;:::i;1650:223::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1650:223:23;;;;;;;;:::i;1879:219::-;1982:4;2022:33;2042:12;2022:19;:33::i;:::-;-1:-1:-1;;;;;2005:75:23;;2081:9;2005:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2005:86:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2005:86:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2005:86:23;;1879:219;-1:-1:-1;;;1879:219:23:o;2104:263::-;2209:4;2225:14;2242:52;2277:4;2283:10;2242:34;:52::i;:::-;2225:69;;2311:49;2346:2;2350:9;2311:34;:49::i;:::-;2304:56;2104:263;-1:-1:-1;;;;;2104:263:23:o;1650:223::-;1755:4;1795:33;1815:12;1795:19;:33::i;:::-;-1:-1:-1;;;;;1778:75:23;;1854:11;1778:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;333:171:23;433:64;;;-1:-1:-1;;;433:64:23;;-1:-1:-1;;;;;433:64:23;;;;;;;;407:7;;284:42;;433:50;;:64;;;;;;;;;;;;;;;284:42;433:64;;;5:2:-1;;;;30:1;27;20:12;5:2;433:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;433:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;433:64:23;;333:171;-1:-1:-1;;333:171:23:o", "source": "pragma solidity 0.5.16;\n\nimport \"../../interfaces/uniswap/IUniswapExchange.sol\";\nimport \"../../interfaces/uniswap/IUniswapFactory.sol\";\n\nimport \"../../interfaces/IERC20.sol\";\n\n\ncontract UniswapBase {\n // Uniswap Mainnet factory address\n address constant UniswapFactoryAddress = 0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95;\n\n function _getUniswapExchange(address tokenAddress) internal view returns (address) {\n return IUniswapFactory(UniswapFactoryAddress).getExchange(tokenAddress);\n }\n\n function _buyTokensWithEthFromUniswap(address tokenAddress, uint ethAmount) internal returns (uint) {\n return IUniswapExchange(_getUniswapExchange(tokenAddress))\n .ethToTokenSwapInput.value(ethAmount)(uint(1), uint(now + 60));\n }\n\n function _buyTokensWithEthFromUniswap(address tokenAddress, uint ethAmount, uint minAmount) internal returns (uint) {\n return IUniswapExchange(_getUniswapExchange(tokenAddress))\n .ethToTokenSwapInput.value(ethAmount)(minAmount, uint(now + 60));\n }\n\n function _sellTokensForEthFromUniswap(address tokenAddress, uint tokenAmount) internal returns (uint) {\n address exchange = _getUniswapExchange(tokenAddress);\n\n IERC20(tokenAddress).approve(exchange, tokenAmount);\n\n return IUniswapExchange(exchange)\n .tokenToEthSwapInput(tokenAmount, uint(1), uint(now + 60));\n }\n\n function _sellTokensForTokensFromUniswap(address from, address to, uint tokenAmount) internal returns (uint) {\n uint ethAmount = _sellTokensForEthFromUniswap(from, tokenAmount);\n return _buyTokensWithEthFromUniswap(to, ethAmount);\n }\n\n function getTokenToEthInputPriceFromUniswap(address tokenAddress, uint tokenAmount) public view returns (uint) {\n return IUniswapExchange(_getUniswapExchange(tokenAddress)).getTokenToEthInputPrice(tokenAmount);\n }\n\n function getEthToTokenInputPriceFromUniswap(address tokenAddress, uint ethAmount) public view returns (uint) {\n return IUniswapExchange(_getUniswapExchange(tokenAddress)).getEthToTokenInputPrice(ethAmount);\n }\n\n function getTokenToTokenPriceFromUniswap(address from, address to, uint fromAmount) public view returns (uint) {\n uint ethAmount = getTokenToEthInputPriceFromUniswap(from, fromAmount);\n return getEthToTokenInputPriceFromUniswap(to, ethAmount);\n }\n}\n", "sourcePath": "/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapBase.sol", "ast": { @@ -484,7 +484,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "743:3:23", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -885,7 +885,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "1017:3:23", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1577,7 +1577,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "1371:3:23", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3397,7 +3397,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "743:3:23", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3798,7 +3798,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "1017:3:23", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4490,7 +4490,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "1371:3:23", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5924,7 +5924,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.918Z", + "updatedAt": "2020-04-03T06:25:13.616Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/UniswapLiteBase.json b/packages/smart-contracts/artifacts/UniswapLiteBase.json index 307a98d..34bff09 100644 --- a/packages/smart-contracts/artifacts/UniswapLiteBase.json +++ b/packages/smart-contracts/artifacts/UniswapLiteBase.json @@ -1,9 +1,9 @@ { "contractName": "UniswapLiteBase", "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":\"UniswapLiteBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]}},\"version\":1}", - "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582025be6ba6fceb7d8e4d473f3406556debf153d33937a4416ec799811b69a002c264736f6c63430005100032", - "deployedBytecode": "0x6080604052600080fdfea265627a7a7231582025be6ba6fceb7d8e4d473f3406556debf153d33937a4416ec799811b69a002c264736f6c63430005100032", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":\"UniswapLiteBase\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapExchange.sol\":{\"keccak256\":\"0xde1a310030b2b654b9c1e7782e94d7f00be0172c32dc4e99a7c168dd53d72843\",\"urls\":[\"bzz-raw://6a8b12cff637c3a1b025bd90a3c75524e53207c457b770bf22800df883fff45d\",\"dweb:/ipfs/QmSJXJDH5jiCkU11Xn7KeVTMoS64xg2XQ5hWGqQhMEnrmX\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/uniswap/IUniswapFactory.sol\":{\"keccak256\":\"0x0d2a2e2c0811bd1e9e757a1a804366cef39120f7eec3bffbcd8802afbf5d6f4b\",\"urls\":[\"bzz-raw://f5d9e36f7f3c6a0771d3656a1b1088f27d82f1f242579fe71e10b2d49aaac5b9\",\"dweb:/ipfs/QmZTjArdX13p6EGRD7fZuros5Wjs52usvNbxSavbLoRgZn\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/uniswap/UniswapLiteBase.sol\":{\"keccak256\":\"0x1058669a50e9c5b2dce70aae66723a01e68e167deb9c3b89ea371cc0038d5dc4\",\"urls\":[\"bzz-raw://3bfffd813909b4322374f3a1b179b10469669ad71fdb6c37f081784453febe05\",\"dweb:/ipfs/QmUFhAH2JxQGdYHRmjVMALuC9e17bZEGKMK7XwGWQwsqn7\"]}},\"version\":1}", + "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820390ff8f9405b3fefea600318d262d865de8ddf8dc61d7a2690fdd77b7b2fbd1a64736f6c63430005100032", + "deployedBytecode": "0x6080604052600080fdfea265627a7a72315820390ff8f9405b3fefea600318d262d865de8ddf8dc61d7a2690fdd77b7b2fbd1a64736f6c63430005100032", "sourceMap": "177:2793:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;177:2793:24;;;;;;;", "deployedSourceMap": "177:2793:24:-;;;;;", "source": "pragma solidity 0.5.16;\n\nimport \"../../interfaces/uniswap/IUniswapExchange.sol\";\nimport \"../../interfaces/uniswap/IUniswapFactory.sol\";\n\nimport \"../../interfaces/IERC20.sol\";\n\n\ncontract UniswapLiteBase {\n // Uniswap Mainnet factory address\n address constant UniswapFactoryAddress = 0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95;\n\n function _getUniswapExchange(address tokenAddress) internal view returns (address) {\n return IUniswapFactory(UniswapFactoryAddress).getExchange(tokenAddress);\n }\n\n function _ethToToken(address tokenAddress, uint ethAmount)\n internal returns (uint) {\n return _ethToToken(tokenAddress, ethAmount, uint(1));\n }\n\n function _ethToToken(address tokenAddress, uint ethAmount, uint minTokenAmount)\n internal returns (uint) {\n return IUniswapExchange(_getUniswapExchange(tokenAddress))\n .ethToTokenSwapInput.value(ethAmount)(minTokenAmount, uint(now + 60));\n }\n\n function _tokenToEth(address tokenAddress, uint tokenAmount) internal returns (uint) {\n return _tokenToEth(tokenAddress, tokenAmount, uint(1));\n }\n\n function _tokenToEth(address tokenAddress, uint tokenAmount, uint minEthAmount) internal returns (uint) {\n address exchange = _getUniswapExchange(tokenAddress);\n\n IERC20(tokenAddress).approve(exchange, tokenAmount);\n\n return IUniswapExchange(exchange)\n .tokenToEthSwapInput(tokenAmount, minEthAmount, uint(now + 60));\n }\n\n function _tokenToToken(address from, address to, uint tokenInAmount, uint minTokenOut) internal returns (uint) {\n uint ethAmount = _tokenToEth(from, tokenInAmount);\n return _ethToToken(to, ethAmount, minTokenOut);\n }\n\n function _tokenToToken(address from, address to, uint tokenAmount) internal returns (uint) {\n return _tokenToToken(from, to, tokenAmount, uint(1));\n }\n\n function _getTokenToEthInput(address tokenAddress, uint tokenAmount) internal view returns (uint) {\n return IUniswapExchange(_getUniswapExchange(tokenAddress)).getTokenToEthInputPrice(tokenAmount);\n }\n\n function _getEthToTokenInput(address tokenAddress, uint ethAmount) internal view returns (uint) {\n return IUniswapExchange(_getUniswapExchange(tokenAddress)).getEthToTokenInputPrice(ethAmount);\n }\n\n function _getTokenToEthOutput(address tokenAddress, uint ethAmount) internal view returns (uint) {\n return IUniswapExchange(_getUniswapExchange(tokenAddress)).getTokenToEthOutputPrice(ethAmount);\n }\n\n function _getEthToTokenOutput(address tokenAddress, uint tokenAmount) internal view returns (uint) {\n return IUniswapExchange(_getUniswapExchange(tokenAddress)).getEthToTokenOutputPrice(tokenAmount);\n }\n\n function _getTokenToTokenInput(address from, address to, uint fromAmount) internal view returns (uint) {\n uint ethAmount = _getTokenToEthInput(from, fromAmount);\n return _getEthToTokenInput(to, ethAmount);\n }\n}\n", @@ -606,7 +606,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "932:3:24", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1504,7 +1504,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "1455:3:24", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4409,7 +4409,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "932:3:24", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5307,7 +5307,7 @@ "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7907, + "referencedDeclaration": 7829, "src": "1455:3:24", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7620,7 +7620,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.920Z", + "updatedAt": "2020-04-03T06:25:13.619Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/artifacts/VatLike.json b/packages/smart-contracts/artifacts/VatLike.json index a4a7fe4..6390191 100644 --- a/packages/smart-contracts/artifacts/VatLike.json +++ b/packages/smart-contracts/artifacts/VatLike.json @@ -201,7 +201,7 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"can\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dai\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"hope\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"ilks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"move\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"urns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"VatLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"can\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dai\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"frob\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"hope\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"ilks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"move\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"urns\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":\"VatLike\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0xe3762e63e74657a066e6fe281ec694e366ca86f6378470304c646b4e785e09f3\",\"urls\":[\"bzz-raw://67607850cbce7ffa66356dd28412e64ff58f62fa7c709f5fa28306b8be9050a7\",\"dweb:/ipfs/QmUaFhH5a6rQ8yJG2A6zJJ1ds9txqxr8ytxd2s7bhiNX35\"]},\"/home/kendrick/Development/Ethereum/dedge/packages/smart-contracts/src/lib/makerdao/DssProxyActionsBase.sol\":{\"keccak256\":\"0x8465bf916f7fbb622bfd0e4d5448effe0f1d056c267a733ce386f739ccf5916e\",\"urls\":[\"bzz-raw://106f1c87e4524a908bb1807951b2e1048797eba0f36604c119eaa4c9e0d0e2ab\",\"dweb:/ipfs/QmRofckMx8B6rP6eRDxKvmSkgo7ipamVDwPYptUfevmMCD\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -4068,10 +4068,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -4801,10 +4801,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5114,10 +5114,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -10687,7 +10687,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -10804,7 +10804,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12335,7 +12335,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -12452,7 +12452,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -16628,10 +16628,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "2570:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17361,10 +17361,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3218:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -17674,10 +17674,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 7908, - 7909 + 7830, + 7831 ], - "referencedDeclaration": 7909, + "referencedDeclaration": 7831, "src": "3355:7:22", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -23247,7 +23247,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7310:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -23364,7 +23364,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "7423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -24895,7 +24895,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8423:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25012,7 +25012,7 @@ "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7993, + "referencedDeclaration": 7915, "src": "8542:4:22", "typeDescriptions": { "typeIdentifier": "t_contract$_DssProxyActionsBase_$4711", @@ -25334,7 +25334,7 @@ }, "networks": {}, "schemaVersion": "3.0.23", - "updatedAt": "2020-04-01T11:18:01.910Z", + "updatedAt": "2020-04-03T06:25:13.605Z", "devdoc": { "methods": {} }, diff --git a/packages/smart-contracts/truffle-config.js b/packages/smart-contracts/truffle-config.js index 3bdb4d6..7dcbdbc 100644 --- a/packages/smart-contracts/truffle-config.js +++ b/packages/smart-contracts/truffle-config.js @@ -107,7 +107,7 @@ module.exports = { settings: { // See the solidity docs for advice about optimization and evmVersion optimizer: { - enabled: false, + enabled: true, runs: 200 }, evmVersion: "constantinople"