{ "contractName": "IDODOZoo", "abi": [ { "inputs": [ { "internalType": "address", "name": "baseToken", "type": "address" }, { "internalType": "address", "name": "quoteToken", "type": "address" } ], "name": "getDODO", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.9+commit.3e3065ac\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"quoteToken\",\"type\":\"address\"}],\"name\":\"getDODO\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/DODOEthProxy.sol\":\"IDODOZoo\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/DODOEthProxy.sol\":{\"keccak256\":\"0xc176f60e025dd47dff2dce5fc492d1a2cabc692d8b0909abfefeb01fcfd1e0da\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://32507f11b7d506cee5b15664ad2cb7219961d4791a3d786846ed26be501121fc\",\"dweb:/ipfs/QmS1Lp2mZ7Ho8qnYVRdwqrQjJPy77nqAAgfY9QeGYq73BH\"]},\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IDODO.sol\":{\"keccak256\":\"0x8fd9ec49ff1517e33698dc8dd4022da05f3a1ae6e4bf97c48f5f5b6714df2123\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cfaa388f09d627ad26c66e6c4a73c232d494010b73b989392e264f815a84cd1d\",\"dweb:/ipfs/QmSBNeEyjgFSAtcYpKjyQfKZx7ahZKFwUtnnbpSSpS3p2H\"]},\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IERC20.sol\":{\"keccak256\":\"0x40355eddd56b5a9ac760c5a056e135946b372b724fb632415792ad82c60a9ac5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66e932da3bb19bdd0a7b17715099bc419f087cbf06809885fd98a7a35574387e\",\"dweb:/ipfs/Qmdv97dz4214Xrbb8xGbuYPJtvmqAoUcXuSCFgA8NzBUsg\"]},\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IWETH.sol\":{\"keccak256\":\"0x477940fe56d5823b603218a07d843eb013524a5b44e2784bf38b8374c22dd4ab\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c9111ef0a330bb0353c5232742867bb18259dd19edd6fb58c83046c007f4dae4\",\"dweb:/ipfs/QmWE34g93fLw5sjMfNxRKP4NU6gdjmyd4A2HNVH9DrkdKp\"]},\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xc9c3fc946350fd72083a9d5b1327ff923533ef37b054bc7b6007562b20b0faaf\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fc140417457139fb240427629673bfaf970c5d4568ad1cfe582764c6e4855bbb\",\"dweb:/ipfs/Qmd7ESYe5kyM6NYiSzeFE74f1YGGPXzpdVd5qnYg2AvgH8\"]},\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/SafeERC20.sol\":{\"keccak256\":\"0xe11bb64537b764f7b0b64f817ffa0b4b278c2017474ff985428225b3f0928295\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c756ca959d2326d58ed49b8a2d39100866197596ba09240e4f1bf861399a6e96\",\"dweb:/ipfs/QmdgzWZNT614vRnb5zsDva91bkLpvZmCVV5d6xetqsyedR\"]},\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/SafeMath.sol\":{\"keccak256\":\"0x57d750628881687f826b54f60cbfd46c1a172433eed892bbb123f91869886af1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b40bd7946010ddae9679f36630510217dcaa9cb8643824f9edc8ef52bda95717\",\"dweb:/ipfs/QmZSjpfUGyrmokZyaMc74a8h6zy2qFVECPVP8VfTvzNEFb\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "immutableReferences": {}, "sourceMap": "", "deployedSourceMap": "", "source": "/*\n\n Copyright 2020 DODO ZOO.\n SPDX-License-Identifier: Apache-2.0\n\n*/\n\npragma solidity 0.6.9;\npragma experimental ABIEncoderV2;\n\nimport {ReentrancyGuard} from \"./lib/ReentrancyGuard.sol\";\nimport {SafeERC20} from \"./lib/SafeERC20.sol\";\nimport {SafeMath} from \"./lib/SafeMath.sol\";\nimport {IDODO} from \"./intf/IDODO.sol\";\nimport {IERC20} from \"./intf/IERC20.sol\";\nimport {IWETH} from \"./intf/IWETH.sol\";\n\ninterface IDODOZoo {\n function getDODO(address baseToken, address quoteToken) external view returns (address);\n}\n\n/**\n * @title DODO Eth Proxy\n * @author DODO Breeder\n *\n * @notice Handle ETH-WETH converting for users.\n */\ncontract DODOEthProxy is ReentrancyGuard {\n using SafeERC20 for IERC20;\n using SafeMath for uint256;\n\n address public _DODO_ZOO_;\n address payable public _WETH_;\n\n // ============ Events ============\n\n event ProxySellEthToToken(\n address indexed seller,\n address indexed quoteToken,\n uint256 payEth,\n uint256 receiveToken\n );\n\n event ProxyBuyEthWithToken(\n address indexed buyer,\n address indexed quoteToken,\n uint256 receiveEth,\n uint256 payToken\n );\n\n event ProxySellTokenToEth(\n address indexed seller,\n address indexed baseToken,\n uint256 payToken,\n uint256 receiveEth\n );\n\n event ProxyBuyTokenWithEth(\n address indexed buyer,\n address indexed baseToken,\n uint256 receiveToken,\n uint256 payEth\n );\n\n event ProxyDepositEthAsBase(address indexed lp, address indexed DODO, uint256 ethAmount);\n\n event ProxyWithdrawEthAsBase(address indexed lp, address indexed DODO, uint256 ethAmount);\n\n event ProxyDepositEthAsQuote(address indexed lp, address indexed DODO, uint256 ethAmount);\n\n event ProxyWithdrawEthAsQuote(address indexed lp, address indexed DODO, uint256 ethAmount);\n\n // ============ Functions ============\n\n constructor(address dodoZoo, address payable weth) public {\n _DODO_ZOO_ = dodoZoo;\n _WETH_ = weth;\n }\n\n fallback() external payable {\n require(msg.sender == _WETH_, \"WE_SAVED_YOUR_ETH_:)\");\n }\n\n receive() external payable {\n require(msg.sender == _WETH_, \"WE_SAVED_YOUR_ETH_:)\");\n }\n\n function sellEthToToken(\n address quoteTokenAddress,\n uint256 ethAmount,\n uint256 minReceiveTokenAmount\n ) external payable preventReentrant returns (uint256 receiveTokenAmount) {\n require(msg.value == ethAmount, \"ETH_AMOUNT_NOT_MATCH\");\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n IWETH(_WETH_).deposit{value: ethAmount}();\n IWETH(_WETH_).approve(DODO, ethAmount);\n receiveTokenAmount = IDODO(DODO).sellBaseToken(ethAmount, minReceiveTokenAmount, \"\");\n _transferOut(quoteTokenAddress, msg.sender, receiveTokenAmount);\n emit ProxySellEthToToken(msg.sender, quoteTokenAddress, ethAmount, receiveTokenAmount);\n return receiveTokenAmount;\n }\n\n function buyEthWithToken(\n address quoteTokenAddress,\n uint256 ethAmount,\n uint256 maxPayTokenAmount\n ) external preventReentrant returns (uint256 payTokenAmount) {\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n payTokenAmount = IDODO(DODO).queryBuyBaseToken(ethAmount);\n _transferIn(quoteTokenAddress, msg.sender, payTokenAmount);\n IERC20(quoteTokenAddress).safeApprove(DODO, payTokenAmount);\n IDODO(DODO).buyBaseToken(ethAmount, maxPayTokenAmount, \"\");\n IWETH(_WETH_).withdraw(ethAmount);\n msg.sender.transfer(ethAmount);\n emit ProxyBuyEthWithToken(msg.sender, quoteTokenAddress, ethAmount, payTokenAmount);\n return payTokenAmount;\n }\n\n function sellTokenToEth(\n address baseTokenAddress,\n uint256 tokenAmount,\n uint256 minReceiveEthAmount\n ) external preventReentrant returns (uint256 receiveEthAmount) {\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(baseTokenAddress, _WETH_);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n IERC20(baseTokenAddress).safeApprove(DODO, tokenAmount);\n _transferIn(baseTokenAddress, msg.sender, tokenAmount);\n receiveEthAmount = IDODO(DODO).sellBaseToken(tokenAmount, minReceiveEthAmount, \"\");\n IWETH(_WETH_).withdraw(receiveEthAmount);\n msg.sender.transfer(receiveEthAmount);\n emit ProxySellTokenToEth(msg.sender, baseTokenAddress, tokenAmount, receiveEthAmount);\n return receiveEthAmount;\n }\n\n function buyTokenWithEth(\n address baseTokenAddress,\n uint256 tokenAmount,\n uint256 maxPayEthAmount\n ) external payable preventReentrant returns (uint256 payEthAmount) {\n require(msg.value == maxPayEthAmount, \"ETH_AMOUNT_NOT_MATCH\");\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(baseTokenAddress, _WETH_);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n payEthAmount = IDODO(DODO).queryBuyBaseToken(tokenAmount);\n IWETH(_WETH_).deposit{value: payEthAmount}();\n IWETH(_WETH_).approve(DODO, payEthAmount);\n IDODO(DODO).buyBaseToken(tokenAmount, maxPayEthAmount, \"\");\n _transferOut(baseTokenAddress, msg.sender, tokenAmount);\n uint256 refund = maxPayEthAmount.sub(payEthAmount);\n if (refund > 0) {\n msg.sender.transfer(refund);\n }\n emit ProxyBuyTokenWithEth(msg.sender, baseTokenAddress, tokenAmount, payEthAmount);\n return payEthAmount;\n }\n\n function depositEthAsBase(uint256 ethAmount, address quoteTokenAddress)\n external\n payable\n preventReentrant\n {\n require(msg.value == ethAmount, \"ETH_AMOUNT_NOT_MATCH\");\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n IWETH(_WETH_).deposit{value: ethAmount}();\n IWETH(_WETH_).approve(DODO, ethAmount);\n IDODO(DODO).depositBaseTo(msg.sender, ethAmount);\n emit ProxyDepositEthAsBase(msg.sender, DODO, ethAmount);\n }\n\n function withdrawEthAsBase(uint256 ethAmount, address quoteTokenAddress)\n external\n preventReentrant\n returns (uint256 withdrawAmount)\n {\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n address ethLpToken = IDODO(DODO)._BASE_CAPITAL_TOKEN_();\n\n // transfer all pool shares to proxy\n uint256 lpBalance = IERC20(ethLpToken).balanceOf(msg.sender);\n IERC20(ethLpToken).transferFrom(msg.sender, address(this), lpBalance);\n IDODO(DODO).withdrawBase(ethAmount);\n\n // transfer remain shares back to msg.sender\n lpBalance = IERC20(ethLpToken).balanceOf(address(this));\n IERC20(ethLpToken).transfer(msg.sender, lpBalance);\n\n // because of withdraw penalty, withdrawAmount may not equal to ethAmount\n // query weth amount first and than transfer ETH to msg.sender\n uint256 wethAmount = IERC20(_WETH_).balanceOf(address(this));\n IWETH(_WETH_).withdraw(wethAmount);\n msg.sender.transfer(wethAmount);\n emit ProxyWithdrawEthAsBase(msg.sender, DODO, wethAmount);\n return wethAmount;\n }\n\n function withdrawAllEthAsBase(address quoteTokenAddress)\n external\n preventReentrant\n returns (uint256 withdrawAmount)\n {\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(_WETH_, quoteTokenAddress);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n address ethLpToken = IDODO(DODO)._BASE_CAPITAL_TOKEN_();\n\n // transfer all pool shares to proxy\n uint256 lpBalance = IERC20(ethLpToken).balanceOf(msg.sender);\n IERC20(ethLpToken).transferFrom(msg.sender, address(this), lpBalance);\n IDODO(DODO).withdrawAllBase();\n\n // because of withdraw penalty, withdrawAmount may not equal to ethAmount\n // query weth amount first and than transfer ETH to msg.sender\n uint256 wethAmount = IERC20(_WETH_).balanceOf(address(this));\n IWETH(_WETH_).withdraw(wethAmount);\n msg.sender.transfer(wethAmount);\n emit ProxyWithdrawEthAsBase(msg.sender, DODO, wethAmount);\n return wethAmount;\n }\n\n function depositEthAsQuote(uint256 ethAmount, address baseTokenAddress)\n external\n payable\n preventReentrant\n {\n require(msg.value == ethAmount, \"ETH_AMOUNT_NOT_MATCH\");\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(baseTokenAddress, _WETH_);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n IWETH(_WETH_).deposit{value: ethAmount}();\n IWETH(_WETH_).approve(DODO, ethAmount);\n IDODO(DODO).depositQuoteTo(msg.sender, ethAmount);\n emit ProxyDepositEthAsQuote(msg.sender, DODO, ethAmount);\n }\n\n function withdrawEthAsQuote(uint256 ethAmount, address baseTokenAddress)\n external\n preventReentrant\n returns (uint256 withdrawAmount)\n {\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(baseTokenAddress, _WETH_);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n address ethLpToken = IDODO(DODO)._QUOTE_CAPITAL_TOKEN_();\n\n // transfer all pool shares to proxy\n uint256 lpBalance = IERC20(ethLpToken).balanceOf(msg.sender);\n IERC20(ethLpToken).transferFrom(msg.sender, address(this), lpBalance);\n IDODO(DODO).withdrawQuote(ethAmount);\n\n // transfer remain shares back to msg.sender\n lpBalance = IERC20(ethLpToken).balanceOf(address(this));\n IERC20(ethLpToken).transfer(msg.sender, lpBalance);\n\n // because of withdraw penalty, withdrawAmount may not equal to ethAmount\n // query weth amount first and than transfer ETH to msg.sender\n uint256 wethAmount = IERC20(_WETH_).balanceOf(address(this));\n IWETH(_WETH_).withdraw(wethAmount);\n msg.sender.transfer(wethAmount);\n emit ProxyWithdrawEthAsQuote(msg.sender, DODO, wethAmount);\n return wethAmount;\n }\n\n function withdrawAllEthAsQuote(address baseTokenAddress)\n external\n preventReentrant\n returns (uint256 withdrawAmount)\n {\n address DODO = IDODOZoo(_DODO_ZOO_).getDODO(baseTokenAddress, _WETH_);\n require(DODO != address(0), \"DODO_NOT_EXIST\");\n address ethLpToken = IDODO(DODO)._QUOTE_CAPITAL_TOKEN_();\n\n // transfer all pool shares to proxy\n uint256 lpBalance = IERC20(ethLpToken).balanceOf(msg.sender);\n IERC20(ethLpToken).transferFrom(msg.sender, address(this), lpBalance);\n IDODO(DODO).withdrawAllQuote();\n\n // because of withdraw penalty, withdrawAmount may not equal to ethAmount\n // query weth amount first and than transfer ETH to msg.sender\n uint256 wethAmount = IERC20(_WETH_).balanceOf(address(this));\n IWETH(_WETH_).withdraw(wethAmount);\n msg.sender.transfer(wethAmount);\n emit ProxyWithdrawEthAsQuote(msg.sender, DODO, wethAmount);\n return wethAmount;\n }\n\n // ============ Helper Functions ============\n\n function _transferIn(\n address tokenAddress,\n address from,\n uint256 amount\n ) internal {\n IERC20(tokenAddress).safeTransferFrom(from, address(this), amount);\n }\n\n function _transferOut(\n address tokenAddress,\n address to,\n uint256 amount\n ) internal {\n IERC20(tokenAddress).safeTransfer(to, amount);\n }\n}\n", "sourcePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/DODOEthProxy.sol", "ast": { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/DODOEthProxy.sol", "exportedSymbols": { "DODOEthProxy": [ 1166 ], "IDODOZoo": [ 24 ] }, "id": 1167, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 1, "literals": [ "solidity", "0.6", ".9" ], "nodeType": "PragmaDirective", "src": "78:22:0" }, { "id": 2, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "101:33:0" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/ReentrancyGuard.sol", "file": "./lib/ReentrancyGuard.sol", "id": 4, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 11297, "src": "136:58:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 3, "name": "ReentrancyGuard", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "144:15:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/SafeERC20.sol", "file": "./lib/SafeERC20.sol", "id": 6, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 11441, "src": "195:46:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 5, "name": "SafeERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "203:9:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/SafeMath.sol", "file": "./lib/SafeMath.sol", "id": 8, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 11624, "src": "242:44:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 7, "name": "SafeMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "250:8:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IDODO.sol", "file": "./intf/IDODO.sol", "id": 10, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 10492, "src": "287:39:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 9, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "295:5:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IERC20.sol", "file": "./intf/IERC20.sol", "id": 12, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 10608, "src": "327:41:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 11, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "335:6:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IWETH.sol", "file": "./intf/IWETH.sol", "id": 14, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 10679, "src": "369:39:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 13, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "377:5:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "abstract": false, "baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 24, "linearizedBaseContracts": [ 24 ], "name": "IDODOZoo", "nodeType": "ContractDefinition", "nodes": [ { "body": null, "documentation": null, "functionSelector": "1273b0c6", "id": 23, "implemented": false, "kind": "function", "modifiers": [], "name": "getDODO", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 19, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 16, "mutability": "mutable", "name": "baseToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 23, "src": "452:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18, "mutability": "mutable", "name": "quoteToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 23, "src": "471:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 17, "name": "address", "nodeType": "ElementaryTypeName", "src": "471:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "451:39:0" }, "returnParameters": { "id": 22, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 23, "src": "514:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 20, "name": "address", "nodeType": "ElementaryTypeName", "src": "514:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "513:9:0" }, "scope": 24, "src": "435:88:0", "stateMutability": "view", "virtual": false, "visibility": "external" } ], "scope": 1167, "src": "410:115:0" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 26, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11296, "src": "661:15:0", "typeDescriptions": { "typeIdentifier": "t_contract$_ReentrancyGuard_$11296", "typeString": "contract ReentrancyGuard" } }, "id": 27, "nodeType": "InheritanceSpecifier", "src": "661:15:0" } ], "contractDependencies": [ 11296 ], "contractKind": "contract", "documentation": { "id": 25, "nodeType": "StructuredDocumentation", "src": "527:108:0", "text": " @title DODO Eth Proxy\n @author DODO Breeder\n @notice Handle ETH-WETH converting for users." }, "fullyImplemented": true, "id": 1166, "linearizedBaseContracts": [ 1166, 11296 ], "name": "DODOEthProxy", "nodeType": "ContractDefinition", "nodes": [ { "id": 30, "libraryName": { "contractScope": null, "id": 28, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11440, "src": "689:9:0", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$11440", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", "src": "683:27:0", "typeName": { "contractScope": null, "id": 29, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10607, "src": "703:6:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } } }, { "id": 33, "libraryName": { "contractScope": null, "id": 31, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11623, "src": "721:8:0", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$11623", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "715:27:0", "typeName": { "id": 32, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "734:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "functionSelector": "39239f72", "id": 35, "mutability": "mutable", "name": "_DODO_ZOO_", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1166, "src": "748:25:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 34, "name": "address", "nodeType": "ElementaryTypeName", "src": "748:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "0d4eec8f", "id": 37, "mutability": "mutable", "name": "_WETH_", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1166, "src": "779:29:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 36, "name": "address", "nodeType": "ElementaryTypeName", "src": "779:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "value": null, "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 47, "name": "ProxySellEthToToken", "nodeType": "EventDefinition", "parameters": { "id": 46, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39, "indexed": true, "mutability": "mutable", "name": "seller", "nodeType": "VariableDeclaration", "overrides": null, "scope": 47, "src": "891:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 38, "name": "address", "nodeType": "ElementaryTypeName", "src": "891:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 41, "indexed": true, "mutability": "mutable", "name": "quoteToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 47, "src": "923:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 40, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 43, "indexed": false, "mutability": "mutable", "name": "payEth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 47, "src": "959:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 42, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "959:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 45, "indexed": false, "mutability": "mutable", "name": "receiveToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 47, "src": "983:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 44, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "983:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "881:128:0" }, "src": "856:154:0" }, { "anonymous": false, "documentation": null, "id": 57, "name": "ProxyBuyEthWithToken", "nodeType": "EventDefinition", "parameters": { "id": 56, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49, "indexed": true, "mutability": "mutable", "name": "buyer", "nodeType": "VariableDeclaration", "overrides": null, "scope": 57, "src": "1052:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 48, "name": "address", "nodeType": "ElementaryTypeName", "src": "1052:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 51, "indexed": true, "mutability": "mutable", "name": "quoteToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 57, "src": "1083:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 50, "name": "address", "nodeType": "ElementaryTypeName", "src": "1083:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 53, "indexed": false, "mutability": "mutable", "name": "receiveEth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 57, "src": "1119:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 52, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1119:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 55, "indexed": false, "mutability": "mutable", "name": "payToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 57, "src": "1147:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 54, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1147:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1042:127:0" }, "src": "1016:154:0" }, { "anonymous": false, "documentation": null, "id": 67, "name": "ProxySellTokenToEth", "nodeType": "EventDefinition", "parameters": { "id": 66, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 59, "indexed": true, "mutability": "mutable", "name": "seller", "nodeType": "VariableDeclaration", "overrides": null, "scope": 67, "src": "1211:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 58, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 61, "indexed": true, "mutability": "mutable", "name": "baseToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 67, "src": "1243:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 60, "name": "address", "nodeType": "ElementaryTypeName", "src": "1243:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 63, "indexed": false, "mutability": "mutable", "name": "payToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 67, "src": "1278:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 62, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1278:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 65, "indexed": false, "mutability": "mutable", "name": "receiveEth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 67, "src": "1304:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 64, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1304:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1201:127:0" }, "src": "1176:153:0" }, { "anonymous": false, "documentation": null, "id": 77, "name": "ProxyBuyTokenWithEth", "nodeType": "EventDefinition", "parameters": { "id": 76, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 69, "indexed": true, "mutability": "mutable", "name": "buyer", "nodeType": "VariableDeclaration", "overrides": null, "scope": 77, "src": "1371:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 68, "name": "address", "nodeType": "ElementaryTypeName", "src": "1371:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 71, "indexed": true, "mutability": "mutable", "name": "baseToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 77, "src": "1402:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 70, "name": "address", "nodeType": "ElementaryTypeName", "src": "1402:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 73, "indexed": false, "mutability": "mutable", "name": "receiveToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 77, "src": "1437:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 72, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1437:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 75, "indexed": false, "mutability": "mutable", "name": "payEth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 77, "src": "1467:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 74, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1467:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1361:126:0" }, "src": "1335:153:0" }, { "anonymous": false, "documentation": null, "id": 85, "name": "ProxyDepositEthAsBase", "nodeType": "EventDefinition", "parameters": { "id": 84, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 79, "indexed": true, "mutability": "mutable", "name": "lp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 85, "src": "1522:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 78, "name": "address", "nodeType": "ElementaryTypeName", "src": "1522:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 81, "indexed": true, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 85, "src": "1542:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 80, "name": "address", "nodeType": "ElementaryTypeName", "src": "1542:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 83, "indexed": false, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 85, "src": "1564:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 82, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1564:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1521:61:0" }, "src": "1494:89:0" }, { "anonymous": false, "documentation": null, "id": 93, "name": "ProxyWithdrawEthAsBase", "nodeType": "EventDefinition", "parameters": { "id": 92, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 87, "indexed": true, "mutability": "mutable", "name": "lp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 93, "src": "1618:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86, "name": "address", "nodeType": "ElementaryTypeName", "src": "1618:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 89, "indexed": true, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 93, "src": "1638:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 88, "name": "address", "nodeType": "ElementaryTypeName", "src": "1638:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 91, "indexed": false, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 93, "src": "1660:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 90, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1660:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1617:61:0" }, "src": "1589:90:0" }, { "anonymous": false, "documentation": null, "id": 101, "name": "ProxyDepositEthAsQuote", "nodeType": "EventDefinition", "parameters": { "id": 100, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 95, "indexed": true, "mutability": "mutable", "name": "lp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 101, "src": "1714:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 94, "name": "address", "nodeType": "ElementaryTypeName", "src": "1714:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 97, "indexed": true, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 101, "src": "1734:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 96, "name": "address", "nodeType": "ElementaryTypeName", "src": "1734:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 99, "indexed": false, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 101, "src": "1756:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 98, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1756:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1713:61:0" }, "src": "1685:90:0" }, { "anonymous": false, "documentation": null, "id": 109, "name": "ProxyWithdrawEthAsQuote", "nodeType": "EventDefinition", "parameters": { "id": 108, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 103, "indexed": true, "mutability": "mutable", "name": "lp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 109, "src": "1811:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 102, "name": "address", "nodeType": "ElementaryTypeName", "src": "1811:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 105, "indexed": true, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 109, "src": "1831:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 104, "name": "address", "nodeType": "ElementaryTypeName", "src": "1831:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 107, "indexed": false, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 109, "src": "1853:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 106, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1853:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1810:61:0" }, "src": "1781:91:0" }, { "body": { "id": 124, "nodeType": "Block", "src": "1980:60:0", "statements": [ { "expression": { "argumentTypes": null, "id": 118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 116, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "1990:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 117, "name": "dodoZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "2003:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1990:20:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 119, "nodeType": "ExpressionStatement", "src": "1990:20:0" }, { "expression": { "argumentTypes": null, "id": 122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 120, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2020:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 121, "name": "weth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, "src": "2029:4:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2020:13:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 123, "nodeType": "ExpressionStatement", "src": "2020:13:0" } ] }, "documentation": null, "id": 125, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 114, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 111, "mutability": "mutable", "name": "dodoZoo", "nodeType": "VariableDeclaration", "overrides": null, "scope": 125, "src": "1934:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110, "name": "address", "nodeType": "ElementaryTypeName", "src": "1934:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 113, "mutability": "mutable", "name": "weth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 125, "src": "1951:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 112, "name": "address", "nodeType": "ElementaryTypeName", "src": "1951:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "value": null, "visibility": "internal" } ], "src": "1933:39:0" }, "returnParameters": { "id": 115, "nodeType": "ParameterList", "parameters": [], "src": "1980:0:0" }, "scope": 1166, "src": "1922:118:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 136, "nodeType": "Block", "src": "2074:70:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 129, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2092:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2092:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 131, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2106:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2092:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "57455f53415645445f594f55525f4554485f3a29", "id": 133, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2114:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b9018661e4ed999153ca4be95c265ddafe03fe302834ed23184dd715a8b0a018", "typeString": "literal_string \"WE_SAVED_YOUR_ETH_:)\"" }, "value": "WE_SAVED_YOUR_ETH_:)" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b9018661e4ed999153ca4be95c265ddafe03fe302834ed23184dd715a8b0a018", "typeString": "literal_string \"WE_SAVED_YOUR_ETH_:)\"" } ], "id": 128, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2084:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 134, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2084:53:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 135, "nodeType": "ExpressionStatement", "src": "2084:53:0" } ] }, "documentation": null, "id": 137, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 126, "nodeType": "ParameterList", "parameters": [], "src": "2054:2:0" }, "returnParameters": { "id": 127, "nodeType": "ParameterList", "parameters": [], "src": "2074:0:0" }, "scope": 1166, "src": "2046:98:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 148, "nodeType": "Block", "src": "2177:70:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "id": 144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 141, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2195:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2195:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 143, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2209:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2195:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "57455f53415645445f594f55525f4554485f3a29", "id": 145, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2217:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b9018661e4ed999153ca4be95c265ddafe03fe302834ed23184dd715a8b0a018", "typeString": "literal_string \"WE_SAVED_YOUR_ETH_:)\"" }, "value": "WE_SAVED_YOUR_ETH_:)" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b9018661e4ed999153ca4be95c265ddafe03fe302834ed23184dd715a8b0a018", "typeString": "literal_string \"WE_SAVED_YOUR_ETH_:)\"" } ], "id": 140, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2187:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 146, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2187:53:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 147, "nodeType": "ExpressionStatement", "src": "2187:53:0" } ] }, "documentation": null, "id": 149, "implemented": true, "kind": "receive", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 138, "nodeType": "ParameterList", "parameters": [], "src": "2157:2:0" }, "returnParameters": { "id": 139, "nodeType": "ParameterList", "parameters": [], "src": "2177:0:0" }, "scope": 1166, "src": "2150:97:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 234, "nodeType": "Block", "src": "2455:604:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 163, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2473:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2473:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 165, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2486:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2473:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4554485f414d4f554e545f4e4f545f4d41544348", "id": 167, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2497:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" }, "value": "ETH_AMOUNT_NOT_MATCH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" } ], "id": 162, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2465:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2465:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 169, "nodeType": "ExpressionStatement", "src": "2465:55:0" }, { "assignments": [ 171 ], "declarations": [ { "constant": false, "id": 171, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 234, "src": "2530:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 170, "name": "address", "nodeType": "ElementaryTypeName", "src": "2530:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 179, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 176, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2574:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 177, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, "src": "2582:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 173, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "2554:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 172, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2545:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2545:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "2545:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 178, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2545:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2530:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 181, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "2618:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2634:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 183, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2626:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 182, "name": "address", "nodeType": "ElementaryTypeName", "src": "2626:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2626:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2618:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 187, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2638:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 180, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2610:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2610:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 189, "nodeType": "ExpressionStatement", "src": "2610:45:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 191, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2671:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 190, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "2665:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2665:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 10672, "src": "2665:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "id": 194, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2694:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "2665:39:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 196, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2665:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 197, "nodeType": "ExpressionStatement", "src": "2665:41:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 202, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "2738:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 203, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2744:9:0", "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": 199, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2722:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 198, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "2716:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2716:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 10658, "src": "2716:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2716:38:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 205, "nodeType": "ExpressionStatement", "src": "2716:38:0" }, { "expression": { "argumentTypes": null, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 206, "name": "receiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "2764:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 211, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2811:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 212, "name": "minReceiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 155, "src": "2822:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2845:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 208, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "2791:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 207, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "2785:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2785:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sellBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10396, "src": "2785:25:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,bytes memory) external returns (uint256)" } }, "id": 214, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2785:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2764:84:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 216, "nodeType": "ExpressionStatement", "src": "2764:84:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 218, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, "src": "2871:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 219, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2890:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2890:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 221, "name": "receiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "2902:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 217, "name": "_transferOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "2858:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 222, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2858:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 223, "nodeType": "ExpressionStatement", "src": "2858:63:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 225, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2956:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2956:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 227, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, "src": "2968:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 228, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2987:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 229, "name": "receiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "2998:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 224, "name": "ProxySellEthToToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, "src": "2936:19:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 230, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2936:81:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 231, "nodeType": "EmitStatement", "src": "2931:86:0" }, { "expression": { "argumentTypes": null, "id": 232, "name": "receiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "3034:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 161, "id": 233, "nodeType": "Return", "src": "3027:25:0" } ] }, "documentation": null, "functionSelector": "e5134628", "id": 235, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 158, "modifierName": { "argumentTypes": null, "id": 157, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "2401:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2401:16:0" } ], "name": "sellEthToToken", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 156, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 151, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 235, "src": "2286:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 150, "name": "address", "nodeType": "ElementaryTypeName", "src": "2286:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 153, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 235, "src": "2321:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 152, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2321:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 155, "mutability": "mutable", "name": "minReceiveTokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 235, "src": "2348:29:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 154, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2348:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2276:107:0" }, "returnParameters": { "id": 161, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 160, "mutability": "mutable", "name": "receiveTokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 235, "src": "2427:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 159, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2427:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2426:28:0" }, "scope": 1166, "src": "2253:806:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 326, "nodeType": "Block", "src": "3252:621:0", "statements": [ { "assignments": [ 249 ], "declarations": [ { "constant": false, "id": 249, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 326, "src": "3262:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 248, "name": "address", "nodeType": "ElementaryTypeName", "src": "3262:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 257, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 254, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "3306:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 255, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 237, "src": "3314:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 251, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "3286:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 250, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3277:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 252, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3277:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "3277:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3277:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "3262:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 259, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "3350:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3366:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 261, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3358:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 260, "name": "address", "nodeType": "ElementaryTypeName", "src": "3358:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3358:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3350:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 265, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3370:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 258, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3342:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 266, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3342:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 267, "nodeType": "ExpressionStatement", "src": "3342:45:0" }, { "expression": { "argumentTypes": null, "id": 275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 268, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3397:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 273, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3444:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 270, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "3420:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 269, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "3414:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 271, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3414:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "queryBuyBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10421, "src": "3414:29:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, "id": 274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3414:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3397:57:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 276, "nodeType": "ExpressionStatement", "src": "3397:57:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 278, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 237, "src": "3476:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 279, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3495:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3495:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 281, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3507:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 277, "name": "_transferIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "3464:11:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 282, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3464:58:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 283, "nodeType": "ExpressionStatement", "src": "3464:58:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 288, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "3570:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 289, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3576:14:0", "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": 285, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 237, "src": "3539:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 284, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "3532:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3532:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeApprove", "nodeType": "MemberAccess", "referencedDeclaration": 11396, "src": "3532:37:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10607_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10607_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 290, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3532:59:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 291, "nodeType": "ExpressionStatement", "src": "3532:59:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 296, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3626:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 297, "name": "maxPayTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 241, "src": "3637:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 298, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3656:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 293, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "3607:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 292, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "3601:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3601:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "buyBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10407, "src": "3601:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,bytes memory) external returns (uint256)" } }, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3601:58:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 300, "nodeType": "ExpressionStatement", "src": "3601:58:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 305, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3692:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 302, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "3675:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 301, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "3669:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 303, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3669:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "3669:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3669:33:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 307, "nodeType": "ExpressionStatement", "src": "3669:33:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 313, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3732:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 308, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3712:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3712:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3712:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3712:30:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 315, "nodeType": "ExpressionStatement", "src": "3712:30:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 317, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3778:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3778:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 319, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 237, "src": "3790:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 320, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3809:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 321, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3820:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 316, "name": "ProxyBuyEthWithToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 57, "src": "3757:20:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 322, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3757:78:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 323, "nodeType": "EmitStatement", "src": "3752:83:0" }, { "expression": { "argumentTypes": null, "id": 324, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3852:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 247, "id": 325, "nodeType": "Return", "src": "3845:21:0" } ] }, "documentation": null, "functionSelector": "e8d522bb", "id": 327, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 244, "modifierName": { "argumentTypes": null, "id": 243, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "3202:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3202:16:0" } ], "name": "buyEthWithToken", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 242, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 237, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 327, "src": "3099:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 236, "name": "address", "nodeType": "ElementaryTypeName", "src": "3099:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 239, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 327, "src": "3134:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 238, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3134:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 241, "mutability": "mutable", "name": "maxPayTokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 327, "src": "3161:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 240, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3161:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3089:103:0" }, "returnParameters": { "id": 247, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 246, "mutability": "mutable", "name": "payTokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 327, "src": "3228:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 245, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3228:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3227:24:0" }, "scope": 1166, "src": "3065:808:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 411, "nodeType": "Block", "src": "4070:587:0", "statements": [ { "assignments": [ 341 ], "declarations": [ { "constant": false, "id": 341, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 411, "src": "4080:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 340, "name": "address", "nodeType": "ElementaryTypeName", "src": "4080:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 349, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 346, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 329, "src": "4124:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 347, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "4142:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 343, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "4104:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 342, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4095:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 344, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4095:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 345, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "4095:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 348, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4095:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4080:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 351, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "4167:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4183:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 353, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4175:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 352, "name": "address", "nodeType": "ElementaryTypeName", "src": "4175:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4175:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "4167:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 357, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4187:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 350, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "4159:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 358, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4159:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 359, "nodeType": "ExpressionStatement", "src": "4159:45:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 364, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "4251:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 365, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "4257:11:0", "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": 361, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 329, "src": "4221:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 360, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "4214:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 362, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4214:24:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeApprove", "nodeType": "MemberAccess", "referencedDeclaration": 11396, "src": "4214:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10607_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10607_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 366, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4214:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 367, "nodeType": "ExpressionStatement", "src": "4214:55:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 369, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 329, "src": "4291:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 370, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4309:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4309:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 372, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "4321:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 368, "name": "_transferIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "4279:11:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 373, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4279:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 374, "nodeType": "ExpressionStatement", "src": "4279:54:0" }, { "expression": { "argumentTypes": null, "id": 384, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 375, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4343:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 380, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "4388:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 381, "name": "minReceiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 333, "src": "4401:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4422:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 377, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "4368:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 376, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "4362:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4362:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sellBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10396, "src": "4362:25:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,bytes memory) external returns (uint256)" } }, "id": 383, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4362:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4343:82:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 385, "nodeType": "ExpressionStatement", "src": "4343:82:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 390, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4458:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 387, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "4441:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 386, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "4435:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 388, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4435:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "4435:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 391, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4435:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 392, "nodeType": "ExpressionStatement", "src": "4435:40:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 398, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4505:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 393, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4485:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4485:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4485:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4485:37:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 400, "nodeType": "ExpressionStatement", "src": "4485:37:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 402, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4557:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4557:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 404, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 329, "src": "4569:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 405, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "4587:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 406, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4600:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 401, "name": "ProxySellTokenToEth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 67, "src": "4537:19:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4537:80:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 408, "nodeType": "EmitStatement", "src": "4532:85:0" }, { "expression": { "argumentTypes": null, "id": 409, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4634:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 339, "id": 410, "nodeType": "Return", "src": "4627:23:0" } ] }, "documentation": null, "functionSelector": "d668e026", "id": 412, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 336, "modifierName": { "argumentTypes": null, "id": 335, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "4018:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4018:16:0" } ], "name": "sellTokenToEth", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 334, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 329, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 412, "src": "3912:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 328, "name": "address", "nodeType": "ElementaryTypeName", "src": "3912:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 331, "mutability": "mutable", "name": "tokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 412, "src": "3946:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 330, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3946:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 333, "mutability": "mutable", "name": "minReceiveEthAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 412, "src": "3975:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 332, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3975:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3902:106:0" }, "returnParameters": { "id": 339, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 338, "mutability": "mutable", "name": "receiveEthAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 412, "src": "4044:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 337, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4044:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4043:26:0" }, "scope": 1166, "src": "3879:778:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 524, "nodeType": "Block", "src": "4855:775:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 426, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4873:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4873:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 428, "name": "maxPayEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 418, "src": "4886:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4873:28:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4554485f414d4f554e545f4e4f545f4d41544348", "id": 430, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4903:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" }, "value": "ETH_AMOUNT_NOT_MATCH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" } ], "id": 425, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "4865:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4865:61:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 432, "nodeType": "ExpressionStatement", "src": "4865:61:0" }, { "assignments": [ 434 ], "declarations": [ { "constant": false, "id": 434, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 524, "src": "4936:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 433, "name": "address", "nodeType": "ElementaryTypeName", "src": "4936:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 442, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 439, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 414, "src": "4980:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 440, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "4998:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 436, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "4960:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 435, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4951:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 437, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4951:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "4951:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4951:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4936:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 444, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "5023:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 447, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5039:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 446, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5031:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 445, "name": "address", "nodeType": "ElementaryTypeName", "src": "5031:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 448, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5031:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "5023:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5043:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 443, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5015:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5015:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 452, "nodeType": "ExpressionStatement", "src": "5015:45:0" }, { "expression": { "argumentTypes": null, "id": 460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 453, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5070:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 458, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "5115:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 455, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "5091:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 454, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "5085:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 456, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5085:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "queryBuyBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10421, "src": "5085:29:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, "id": 459, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5085:42:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5070:57:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 461, "nodeType": "ExpressionStatement", "src": "5070:57:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 463, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "5143:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 462, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "5137:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 464, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5137:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 10672, "src": "5137:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "id": 466, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5166:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "5137:42:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 468, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5137:44:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 469, "nodeType": "ExpressionStatement", "src": "5137:44:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 474, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "5213:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 475, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5219:12:0", "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": 471, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "5197:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 470, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "5191:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 472, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5191:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 10658, "src": "5191:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5191:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 477, "nodeType": "ExpressionStatement", "src": "5191:41:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 482, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "5267:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 483, "name": "maxPayEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 418, "src": "5280:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 484, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5297:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 479, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "5248:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 478, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "5242:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5242:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "buyBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10407, "src": "5242:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,bytes memory) external returns (uint256)" } }, "id": 485, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5242:58:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 486, "nodeType": "ExpressionStatement", "src": "5242:58:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 488, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 414, "src": "5323:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 489, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5341:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5341:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 491, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "5353:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 487, "name": "_transferOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "5310:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 492, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5310:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 493, "nodeType": "ExpressionStatement", "src": "5310:55:0" }, { "assignments": [ 495 ], "declarations": [ { "constant": false, "id": 495, "mutability": "mutable", "name": "refund", "nodeType": "VariableDeclaration", "overrides": null, "scope": 524, "src": "5375:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 494, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5375:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 500, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 498, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5412:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 496, "name": "maxPayEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 418, "src": "5392:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 497, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "5392:19:0", "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": 499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5392:33:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "5375:50:0" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 501, "name": "refund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 495, "src": "5439:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5448:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "5439:10:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 513, "nodeType": "IfStatement", "src": "5435:68:0", "trueBody": { "id": 512, "nodeType": "Block", "src": "5451:52:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 509, "name": "refund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 495, "src": "5485:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 504, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5465:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5465:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 508, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5465:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5465:27:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 511, "nodeType": "ExpressionStatement", "src": "5465:27:0" } ] } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 515, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5538:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5538:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 517, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 414, "src": "5550:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 518, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "5568:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 519, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5581:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 514, "name": "ProxyBuyTokenWithEth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "5517:20:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 520, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5517:77:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 521, "nodeType": "EmitStatement", "src": "5512:82:0" }, { "expression": { "argumentTypes": null, "id": 522, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5611:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 424, "id": 523, "nodeType": "Return", "src": "5604:19:0" } ] }, "documentation": null, "functionSelector": "33e00053", "id": 525, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 421, "modifierName": { "argumentTypes": null, "id": 420, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "4807:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4807:16:0" } ], "name": "buyTokenWithEth", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 419, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 414, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 525, "src": "4697:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 413, "name": "address", "nodeType": "ElementaryTypeName", "src": "4697:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 416, "mutability": "mutable", "name": "tokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 525, "src": "4731:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 415, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4731:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 418, "mutability": "mutable", "name": "maxPayEthAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 525, "src": "4760:23:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 417, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4760:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4687:102:0" }, "returnParameters": { "id": 424, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 423, "mutability": "mutable", "name": "payEthAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 525, "src": "4833:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 422, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4833:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4832:22:0" }, "scope": 1166, "src": "4663:967:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 594, "nodeType": "Block", "src": "5770:429:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 535, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5788:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5788:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 537, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "5801:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5788:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4554485f414d4f554e545f4e4f545f4d41544348", "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5812:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" }, "value": "ETH_AMOUNT_NOT_MATCH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" } ], "id": 534, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5780:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5780:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 541, "nodeType": "ExpressionStatement", "src": "5780:55:0" }, { "assignments": [ 543 ], "declarations": [ { "constant": false, "id": 543, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 594, "src": "5845:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 542, "name": "address", "nodeType": "ElementaryTypeName", "src": "5845:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 551, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 548, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "5889:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 549, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 529, "src": "5897:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 545, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "5869:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 544, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "5860:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5860:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 547, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "5860:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5860:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5845:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 553, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "5933:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5949:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 555, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5941:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 554, "name": "address", "nodeType": "ElementaryTypeName", "src": "5941:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 557, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5941:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "5933:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 559, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5953:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 552, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5925:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 560, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5925:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 561, "nodeType": "ExpressionStatement", "src": "5925:45:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 563, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "5986:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 562, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "5980:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5980:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 10672, "src": "5980:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "id": 566, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "6009:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "5980:39:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5980:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 569, "nodeType": "ExpressionStatement", "src": "5980:41:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 574, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "6053:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 575, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "6059:9:0", "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": 571, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "6037:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 570, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "6031:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6031:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 10658, "src": "6031:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6031:38:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 577, "nodeType": "ExpressionStatement", "src": "6031:38:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 582, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6105:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6105:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 584, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "6117:9:0", "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": 579, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "6085:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 578, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "6079:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6079:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "depositBaseTo", "nodeType": "MemberAccess", "referencedDeclaration": 10437, "src": "6079:25:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) external returns (uint256)" } }, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6079:48:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 586, "nodeType": "ExpressionStatement", "src": "6079:48:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 588, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6164:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6164:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 590, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "6176:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 591, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "6182:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 587, "name": "ProxyDepositEthAsBase", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "6142:21:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 592, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6142:50:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 593, "nodeType": "EmitStatement", "src": "6137:55:0" } ] }, "documentation": null, "functionSelector": "b56a1d03", "id": 595, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 532, "modifierName": { "argumentTypes": null, "id": 531, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "5749:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "5749:16:0" } ], "name": "depositEthAsBase", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 530, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 527, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 595, "src": "5662:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 526, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5662:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 529, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 595, "src": "5681:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 528, "name": "address", "nodeType": "ElementaryTypeName", "src": "5681:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5661:46:0" }, "returnParameters": { "id": 533, "nodeType": "ParameterList", "parameters": [], "src": "5770:0:0" }, "scope": 1166, "src": "5636:563:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 721, "nodeType": "Block", "src": "6365:1029:0", "statements": [ { "assignments": [ 607 ], "declarations": [ { "constant": false, "id": 607, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 721, "src": "6375:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 606, "name": "address", "nodeType": "ElementaryTypeName", "src": "6375:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 615, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 612, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "6419:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 613, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "6427:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 609, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "6399:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 608, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "6390:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6390:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "6390:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 614, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6390:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6375:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 617, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 607, "src": "6463:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 620, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6479:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6471:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 618, "name": "address", "nodeType": "ElementaryTypeName", "src": "6471:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6471:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6463:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6483:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 616, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "6455:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 624, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6455:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 625, "nodeType": "ExpressionStatement", "src": "6455:45:0" }, { "assignments": [ 627 ], "declarations": [ { "constant": false, "id": 627, "mutability": "mutable", "name": "ethLpToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 721, "src": "6510:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 626, "name": "address", "nodeType": "ElementaryTypeName", "src": "6510:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 633, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 629, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 607, "src": "6537:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 628, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "6531:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6531:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_BASE_CAPITAL_TOKEN_", "nodeType": "MemberAccess", "referencedDeclaration": 10475, "src": "6531:32:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 632, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6531:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6510:55:0" }, { "assignments": [ 635 ], "declarations": [ { "constant": false, "id": 635, "mutability": "mutable", "name": "lpBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 721, "src": "6621:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 634, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6621:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 643, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 640, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6670:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6670:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 637, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "6648:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 636, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "6641:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 638, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6641:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "6641:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6641:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "6621:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 648, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6723:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6723:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 652, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "6743:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 651, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6735:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 650, "name": "address", "nodeType": "ElementaryTypeName", "src": "6735:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 653, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6735:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 654, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "6750:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 645, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "6698:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 644, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "6691:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 646, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6691:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 10606, "src": "6691:31:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6691:69:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 656, "nodeType": "ExpressionStatement", "src": "6691:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 661, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "6795:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 658, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 607, "src": "6776:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 657, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "6770:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6770:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdrawBase", "nodeType": "MemberAccess", "referencedDeclaration": 10444, "src": "6770:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) external returns (uint256)" } }, "id": 662, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6770:35:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 663, "nodeType": "ExpressionStatement", "src": "6770:35:0" }, { "expression": { "argumentTypes": null, "id": 674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 664, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "6869:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 671, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "6918:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 670, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6910:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 669, "name": "address", "nodeType": "ElementaryTypeName", "src": "6910:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 672, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6910:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 666, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "6888:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 665, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "6881:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 667, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6881:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "6881:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6881:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6869:55:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 675, "nodeType": "ExpressionStatement", "src": "6869:55:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 680, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6962:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 681, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6962:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 682, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "6974:9:0", "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": 677, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "6941:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 676, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "6934:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 678, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6934:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 679, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 10574, "src": "6934:27:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 683, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6934:50:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 684, "nodeType": "ExpressionStatement", "src": "6934:50:0" }, { "assignments": [ 686 ], "declarations": [ { "constant": false, "id": 686, "mutability": "mutable", "name": "wethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 721, "src": "7148:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 685, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7148:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 696, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 693, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "7202:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 692, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7194:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 691, "name": "address", "nodeType": "ElementaryTypeName", "src": "7194:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7194:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 688, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "7176:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 687, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "7169:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 689, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7169:14:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "7169:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7169:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7148:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 701, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "7241:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 698, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "7224:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 697, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "7218:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7218:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 700, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "7218:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 702, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7218:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 703, "nodeType": "ExpressionStatement", "src": "7218:34:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 709, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "7282:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 704, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7262:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7262:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 708, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7262:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7262:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 711, "nodeType": "ExpressionStatement", "src": "7262:31:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 713, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7331:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7331:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 715, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 607, "src": "7343:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 716, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "7349:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 712, "name": "ProxyWithdrawEthAsBase", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "7308:22:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 717, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7308:52:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 718, "nodeType": "EmitStatement", "src": "7303:57:0" }, { "expression": { "argumentTypes": null, "id": 719, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "7377:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 605, "id": 720, "nodeType": "Return", "src": "7370:17:0" } ] }, "documentation": null, "functionSelector": "827df194", "id": 722, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 602, "modifierName": { "argumentTypes": null, "id": 601, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "6303:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "6303:16:0" } ], "name": "withdrawEthAsBase", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 600, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 597, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 722, "src": "6232:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6232:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 599, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 722, "src": "6251:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 598, "name": "address", "nodeType": "ElementaryTypeName", "src": "6251:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "6231:46:0" }, "returnParameters": { "id": 605, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 604, "mutability": "mutable", "name": "withdrawAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 722, "src": "6337:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6337:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "6336:24:0" }, "scope": 1166, "src": "6205:1189:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 824, "nodeType": "Block", "src": "7544:844:0", "statements": [ { "assignments": [ 732 ], "declarations": [ { "constant": false, "id": 732, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 824, "src": "7554:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 731, "name": "address", "nodeType": "ElementaryTypeName", "src": "7554:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 740, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 737, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "7598:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 738, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "7606:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 734, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "7578:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 733, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "7569:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 735, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7569:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 736, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "7569:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 739, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7569:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "7554:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 742, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "7642:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 745, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7658:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 744, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7650:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 743, "name": "address", "nodeType": "ElementaryTypeName", "src": "7650:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7650:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "7642:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7662:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 741, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "7634:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 749, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7634:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 750, "nodeType": "ExpressionStatement", "src": "7634:45:0" }, { "assignments": [ 752 ], "declarations": [ { "constant": false, "id": 752, "mutability": "mutable", "name": "ethLpToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 824, "src": "7689:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 751, "name": "address", "nodeType": "ElementaryTypeName", "src": "7689:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 758, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 754, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "7716:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 753, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "7710:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 755, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7710:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_BASE_CAPITAL_TOKEN_", "nodeType": "MemberAccess", "referencedDeclaration": 10475, "src": "7710:32:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7710:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "7689:55:0" }, { "assignments": [ 760 ], "declarations": [ { "constant": false, "id": 760, "mutability": "mutable", "name": "lpBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 824, "src": "7800:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 759, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7800:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 768, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 765, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7849:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7849:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 762, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 752, "src": "7827:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 761, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "7820:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 763, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7820:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 764, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "7820:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 767, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7820:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7800:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 773, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7902:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7902:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 777, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "7922:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 776, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7914:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 775, "name": "address", "nodeType": "ElementaryTypeName", "src": "7914:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 778, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7914:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 779, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 760, "src": "7929:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 770, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 752, "src": "7877:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 769, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "7870:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 771, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7870:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 772, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 10606, "src": "7870:31:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7870:69:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 781, "nodeType": "ExpressionStatement", "src": "7870:69:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 783, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "7955:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 782, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "7949:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 784, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7949:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdrawAllBase", "nodeType": "MemberAccess", "referencedDeclaration": 10449, "src": "7949:27:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7949:29:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 787, "nodeType": "ExpressionStatement", "src": "7949:29:0" }, { "assignments": [ 789 ], "declarations": [ { "constant": false, "id": 789, "mutability": "mutable", "name": "wethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 824, "src": "8142:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 788, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8142:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 799, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 796, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8196:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 795, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8188:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 794, "name": "address", "nodeType": "ElementaryTypeName", "src": "8188:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 797, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8188:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 791, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8170:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 790, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "8163:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 792, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8163:14:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 793, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "8163:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 798, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8163:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8142:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 804, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "8235:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 801, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8218:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 800, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "8212:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8212:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "8212:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 805, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8212:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 806, "nodeType": "ExpressionStatement", "src": "8212:34:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 812, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "8276:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 807, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8256:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8256:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8256:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 813, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8256:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 814, "nodeType": "ExpressionStatement", "src": "8256:31:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 816, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8325:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8325:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 818, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "8337:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 819, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "8343:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 815, "name": "ProxyWithdrawEthAsBase", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "8302:22:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 820, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8302:52:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 821, "nodeType": "EmitStatement", "src": "8297:57:0" }, { "expression": { "argumentTypes": null, "id": 822, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "8371:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 730, "id": 823, "nodeType": "Return", "src": "8364:17:0" } ] }, "documentation": null, "functionSelector": "0ae4b86d", "id": 825, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 727, "modifierName": { "argumentTypes": null, "id": 726, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "7482:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "7482:16:0" } ], "name": "withdrawAllEthAsBase", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 725, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 724, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 825, "src": "7430:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 723, "name": "address", "nodeType": "ElementaryTypeName", "src": "7430:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "7429:27:0" }, "returnParameters": { "id": 730, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 729, "mutability": "mutable", "name": "withdrawAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 825, "src": "7516:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 728, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7516:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7515:24:0" }, "scope": 1166, "src": "7400:988:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 894, "nodeType": "Block", "src": "8528:430:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 835, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8546:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 836, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8546:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 837, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8559:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8546:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4554485f414d4f554e545f4e4f545f4d41544348", "id": 839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8570:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" }, "value": "ETH_AMOUNT_NOT_MATCH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" } ], "id": 834, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "8538:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 840, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8538:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 841, "nodeType": "ExpressionStatement", "src": "8538:55:0" }, { "assignments": [ 843 ], "declarations": [ { "constant": false, "id": 843, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 894, "src": "8603:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 842, "name": "address", "nodeType": "ElementaryTypeName", "src": "8603:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 851, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 848, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "8647:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 849, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8665:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 845, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "8627:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 844, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "8618:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8618:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "8618:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8618:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "8603:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 853, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "8690:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 856, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8706:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 855, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8698:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 854, "name": "address", "nodeType": "ElementaryTypeName", "src": "8698:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 857, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8698:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "8690:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 859, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8710:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 852, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "8682:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8682:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 861, "nodeType": "ExpressionStatement", "src": "8682:45:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 863, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8743:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 862, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "8737:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 864, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8737:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 10672, "src": "8737:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 867, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "id": 866, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8766:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "8737:39:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 868, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8737:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 869, "nodeType": "ExpressionStatement", "src": "8737:41:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 874, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "8810:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 875, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8816:9:0", "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": 871, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8794:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 870, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "8788:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 872, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8788:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 873, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 10658, "src": "8788:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 876, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8788:38:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 877, "nodeType": "ExpressionStatement", "src": "8788:38:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 882, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8863:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8863:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 884, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8875:9:0", "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": 879, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "8842:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 878, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "8836:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 880, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8836:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "depositQuoteTo", "nodeType": "MemberAccess", "referencedDeclaration": 10458, "src": "8836:26:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) external returns (uint256)" } }, "id": 885, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8836:49:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 886, "nodeType": "ExpressionStatement", "src": "8836:49:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 888, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8923:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8923:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 890, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "8935:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 891, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8941:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 887, "name": "ProxyDepositEthAsQuote", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 101, "src": "8900:22:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 892, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8900:51:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 893, "nodeType": "EmitStatement", "src": "8895:56:0" } ] }, "documentation": null, "functionSelector": "ba9344a4", "id": 895, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 832, "modifierName": { "argumentTypes": null, "id": 831, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "8507:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "8507:16:0" } ], "name": "depositEthAsQuote", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 830, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 827, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 895, "src": "8421:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 826, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8421:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 829, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 895, "src": "8440:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 828, "name": "address", "nodeType": "ElementaryTypeName", "src": "8440:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "8420:45:0" }, "returnParameters": { "id": 833, "nodeType": "ParameterList", "parameters": [], "src": "8528:0:0" }, "scope": 1166, "src": "8394:564:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 1021, "nodeType": "Block", "src": "9124:1031:0", "statements": [ { "assignments": [ 907 ], "declarations": [ { "constant": false, "id": 907, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1021, "src": "9134:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 906, "name": "address", "nodeType": "ElementaryTypeName", "src": "9134:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 915, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 912, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 899, "src": "9178:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 913, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "9196:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 909, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "9158:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 908, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "9149:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 910, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9149:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "9149:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9149:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "9134:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 917, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 907, "src": "9221:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 920, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9237:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 919, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9229:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 918, "name": "address", "nodeType": "ElementaryTypeName", "src": "9229:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 921, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9229:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "9221:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9241:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 916, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "9213:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9213:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 925, "nodeType": "ExpressionStatement", "src": "9213:45:0" }, { "assignments": [ 927 ], "declarations": [ { "constant": false, "id": 927, "mutability": "mutable", "name": "ethLpToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1021, "src": "9268:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 926, "name": "address", "nodeType": "ElementaryTypeName", "src": "9268:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 933, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 929, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 907, "src": "9295:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 928, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "9289:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 930, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9289:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 931, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_QUOTE_CAPITAL_TOKEN_", "nodeType": "MemberAccess", "referencedDeclaration": 10480, "src": "9289:33:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9289:35:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "9268:56:0" }, { "assignments": [ 935 ], "declarations": [ { "constant": false, "id": 935, "mutability": "mutable", "name": "lpBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1021, "src": "9380:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 934, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9380:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 943, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 940, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9429:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9429:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 937, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "9407:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 936, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9400:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 938, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9400:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 939, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "9400:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9400:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "9380:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 948, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9482:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9482:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 952, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "9502:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 951, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9494:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 950, "name": "address", "nodeType": "ElementaryTypeName", "src": "9494:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 953, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9494:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 954, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "9509:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 945, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "9457:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 944, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9450:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9450:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 947, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 10606, "src": "9450:31:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, "id": 955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9450:69:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 956, "nodeType": "ExpressionStatement", "src": "9450:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 961, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 897, "src": "9555:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 958, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 907, "src": "9535:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 957, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "9529:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 959, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9529:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdrawQuote", "nodeType": "MemberAccess", "referencedDeclaration": 10465, "src": "9529:25:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) external returns (uint256)" } }, "id": 962, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9529:36:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 963, "nodeType": "ExpressionStatement", "src": "9529:36:0" }, { "expression": { "argumentTypes": null, "id": 974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 964, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "9629:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 971, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "9678:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 970, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9670:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 969, "name": "address", "nodeType": "ElementaryTypeName", "src": "9670:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 972, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9670:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 966, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "9648:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 965, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9641:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9641:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "9641:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 973, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9641:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9629:55:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 975, "nodeType": "ExpressionStatement", "src": "9629:55:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 980, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9722:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 981, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9722:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 982, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "9734:9:0", "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": 977, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "9701:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 976, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9694:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9694:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 10574, "src": "9694:27:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9694:50:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 984, "nodeType": "ExpressionStatement", "src": "9694:50:0" }, { "assignments": [ 986 ], "declarations": [ { "constant": false, "id": 986, "mutability": "mutable", "name": "wethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1021, "src": "9908:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 985, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9908:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 996, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 993, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "9962:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 992, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9954:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 991, "name": "address", "nodeType": "ElementaryTypeName", "src": "9954:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 994, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9954:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 988, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "9936:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 987, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9929:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 989, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9929:14:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 990, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "9929:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9929:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "9908:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1001, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "10001:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 998, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "9984:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 997, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "9978:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 999, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9978:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "9978:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 1002, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9978:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1003, "nodeType": "ExpressionStatement", "src": "9978:34:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1009, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "10042:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1004, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "10022:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10022:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 1008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10022:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10022:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1011, "nodeType": "ExpressionStatement", "src": "10022:31:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1013, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "10092:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10092:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1015, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 907, "src": "10104:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1016, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "10110:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1012, "name": "ProxyWithdrawEthAsQuote", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "10068:23:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1017, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10068:53:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1018, "nodeType": "EmitStatement", "src": "10063:58:0" }, { "expression": { "argumentTypes": null, "id": 1019, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "10138:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 905, "id": 1020, "nodeType": "Return", "src": "10131:17:0" } ] }, "documentation": null, "functionSelector": "770e96d3", "id": 1022, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 902, "modifierName": { "argumentTypes": null, "id": 901, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "9062:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "9062:16:0" } ], "name": "withdrawEthAsQuote", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 900, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 897, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1022, "src": "8992:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 896, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8992:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 899, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1022, "src": "9011:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 898, "name": "address", "nodeType": "ElementaryTypeName", "src": "9011:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "8991:45:0" }, "returnParameters": { "id": 905, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 904, "mutability": "mutable", "name": "withdrawAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1022, "src": "9096:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 903, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9096:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "9095:24:0" }, "scope": 1166, "src": "8964:1191:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 1124, "nodeType": "Block", "src": "10305:846:0", "statements": [ { "assignments": [ 1032 ], "declarations": [ { "constant": false, "id": 1032, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1124, "src": "10315:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1031, "name": "address", "nodeType": "ElementaryTypeName", "src": "10315:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1040, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1037, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1024, "src": "10359:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1038, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "10377:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1034, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "10339:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1033, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "10330:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 1035, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10330:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "10330:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 1039, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10330:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "10315:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1047, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1042, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "10402:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10418:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1044, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10410:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1043, "name": "address", "nodeType": "ElementaryTypeName", "src": "10410:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1046, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10410:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "10402:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 1048, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10422:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 1041, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "10394:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10394:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1050, "nodeType": "ExpressionStatement", "src": "10394:45:0" }, { "assignments": [ 1052 ], "declarations": [ { "constant": false, "id": 1052, "mutability": "mutable", "name": "ethLpToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1124, "src": "10449:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1051, "name": "address", "nodeType": "ElementaryTypeName", "src": "10449:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1058, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1054, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "10476:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1053, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "10470:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10470:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 1056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_QUOTE_CAPITAL_TOKEN_", "nodeType": "MemberAccess", "referencedDeclaration": 10480, "src": "10470:33:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 1057, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10470:35:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "10449:56:0" }, { "assignments": [ 1060 ], "declarations": [ { "constant": false, "id": 1060, "mutability": "mutable", "name": "lpBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1124, "src": "10561:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1059, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10561:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1068, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1065, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "10610:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10610:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1062, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "10588:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1061, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "10581:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1063, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10581:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "10581:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10581:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "10561:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1073, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "10663:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10663:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1077, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "10683:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 1076, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10675:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1075, "name": "address", "nodeType": "ElementaryTypeName", "src": "10675:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10675:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1079, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1060, "src": "10690:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1070, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "10638:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1069, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "10631:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10631:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 10606, "src": "10631:31:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10631:69:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1081, "nodeType": "ExpressionStatement", "src": "10631:69:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1083, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "10716:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1082, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "10710:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 1084, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10710:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 1085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdrawAllQuote", "nodeType": "MemberAccess", "referencedDeclaration": 10470, "src": "10710:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, "id": 1086, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10710:30:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1087, "nodeType": "ExpressionStatement", "src": "10710:30:0" }, { "assignments": [ 1089 ], "declarations": [ { "constant": false, "id": 1089, "mutability": "mutable", "name": "wethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1124, "src": "10904:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1088, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10904:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1099, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1096, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "10958:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 1095, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10950:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1094, "name": "address", "nodeType": "ElementaryTypeName", "src": "10950:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1097, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10950:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1091, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "10932:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1090, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "10925:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10925:14:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1093, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "10925:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10925:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "10904:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1104, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1089, "src": "10997:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1101, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "10980:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1100, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "10974:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 1102, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10974:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 1103, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "10974:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 1105, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10974:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1106, "nodeType": "ExpressionStatement", "src": "10974:34:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1112, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1089, "src": "11038:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1107, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11018:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11018:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 1111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11018:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 1113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11018:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1114, "nodeType": "ExpressionStatement", "src": "11018:31:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1116, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11088:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11088:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1118, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "11100:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1119, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1089, "src": "11106:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1115, "name": "ProxyWithdrawEthAsQuote", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "11064:23:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11064:53:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1121, "nodeType": "EmitStatement", "src": "11059:58:0" }, { "expression": { "argumentTypes": null, "id": 1122, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1089, "src": "11134:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1030, "id": 1123, "nodeType": "Return", "src": "11127:17:0" } ] }, "documentation": null, "functionSelector": "3cff9b56", "id": 1125, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 1027, "modifierName": { "argumentTypes": null, "id": 1026, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "10243:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "10243:16:0" } ], "name": "withdrawAllEthAsQuote", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1025, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1024, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1125, "src": "10192:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1023, "name": "address", "nodeType": "ElementaryTypeName", "src": "10192:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "10191:26:0" }, "returnParameters": { "id": 1030, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1029, "mutability": "mutable", "name": "withdrawAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1125, "src": "10277:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1028, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10277:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "10276:24:0" }, "scope": 1166, "src": "10161:990:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 1146, "nodeType": "Block", "src": "11320:83:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1138, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1129, "src": "11368:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1141, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "11382:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 1140, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11374:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1139, "name": "address", "nodeType": "ElementaryTypeName", "src": "11374:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11374:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1143, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1131, "src": "11389:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1135, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1127, "src": "11337:12:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1134, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "11330:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11330:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 11354, "src": "11330:37:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10607_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10607_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11330:66:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1145, "nodeType": "ExpressionStatement", "src": "11330:66:0" } ] }, "documentation": null, "id": 1147, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferIn", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1132, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1127, "mutability": "mutable", "name": "tokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1147, "src": "11238:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1126, "name": "address", "nodeType": "ElementaryTypeName", "src": "11238:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1129, "mutability": "mutable", "name": "from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1147, "src": "11268:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1128, "name": "address", "nodeType": "ElementaryTypeName", "src": "11268:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1131, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1147, "src": "11290:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1130, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11290:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "11228:82:0" }, "returnParameters": { "id": 1133, "nodeType": "ParameterList", "parameters": [], "src": "11320:0:0" }, "scope": 1166, "src": "11208:195:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1164, "nodeType": "Block", "src": "11520:62:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1160, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1151, "src": "11564:2:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1161, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1153, "src": "11568:6:0", "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": 1157, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "11537:12:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1156, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "11530:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11530:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 11329, "src": "11530:33:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10607_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10607_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11530:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1163, "nodeType": "ExpressionStatement", "src": "11530:45:0" } ] }, "documentation": null, "id": 1165, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOut", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1154, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1149, "mutability": "mutable", "name": "tokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1165, "src": "11440:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1148, "name": "address", "nodeType": "ElementaryTypeName", "src": "11440:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1151, "mutability": "mutable", "name": "to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1165, "src": "11470:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1150, "name": "address", "nodeType": "ElementaryTypeName", "src": "11470:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1153, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1165, "src": "11490:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1152, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11490:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "11430:80:0" }, "returnParameters": { "id": 1155, "nodeType": "ParameterList", "parameters": [], "src": "11520:0:0" }, "scope": 1166, "src": "11409:173:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" } ], "scope": 1167, "src": "636:10948:0" } ], "src": "78:11507:0" }, "legacyAST": { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/DODOEthProxy.sol", "exportedSymbols": { "DODOEthProxy": [ 1166 ], "IDODOZoo": [ 24 ] }, "id": 1167, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 1, "literals": [ "solidity", "0.6", ".9" ], "nodeType": "PragmaDirective", "src": "78:22:0" }, { "id": 2, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "101:33:0" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/ReentrancyGuard.sol", "file": "./lib/ReentrancyGuard.sol", "id": 4, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 11297, "src": "136:58:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 3, "name": "ReentrancyGuard", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "144:15:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/SafeERC20.sol", "file": "./lib/SafeERC20.sol", "id": 6, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 11441, "src": "195:46:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 5, "name": "SafeERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "203:9:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/lib/SafeMath.sol", "file": "./lib/SafeMath.sol", "id": 8, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 11624, "src": "242:44:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 7, "name": "SafeMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "250:8:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IDODO.sol", "file": "./intf/IDODO.sol", "id": 10, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 10492, "src": "287:39:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 9, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "295:5:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IERC20.sol", "file": "./intf/IERC20.sol", "id": 12, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 10608, "src": "327:41:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 11, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "335:6:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/intf/IWETH.sol", "file": "./intf/IWETH.sol", "id": 14, "nodeType": "ImportDirective", "scope": 1167, "sourceUnit": 10679, "src": "369:39:0", "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 13, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "377:5:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "abstract": false, "baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 24, "linearizedBaseContracts": [ 24 ], "name": "IDODOZoo", "nodeType": "ContractDefinition", "nodes": [ { "body": null, "documentation": null, "functionSelector": "1273b0c6", "id": 23, "implemented": false, "kind": "function", "modifiers": [], "name": "getDODO", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 19, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 16, "mutability": "mutable", "name": "baseToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 23, "src": "452:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 15, "name": "address", "nodeType": "ElementaryTypeName", "src": "452:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18, "mutability": "mutable", "name": "quoteToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 23, "src": "471:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 17, "name": "address", "nodeType": "ElementaryTypeName", "src": "471:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "451:39:0" }, "returnParameters": { "id": 22, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 23, "src": "514:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 20, "name": "address", "nodeType": "ElementaryTypeName", "src": "514:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "513:9:0" }, "scope": 24, "src": "435:88:0", "stateMutability": "view", "virtual": false, "visibility": "external" } ], "scope": 1167, "src": "410:115:0" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 26, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11296, "src": "661:15:0", "typeDescriptions": { "typeIdentifier": "t_contract$_ReentrancyGuard_$11296", "typeString": "contract ReentrancyGuard" } }, "id": 27, "nodeType": "InheritanceSpecifier", "src": "661:15:0" } ], "contractDependencies": [ 11296 ], "contractKind": "contract", "documentation": { "id": 25, "nodeType": "StructuredDocumentation", "src": "527:108:0", "text": " @title DODO Eth Proxy\n @author DODO Breeder\n @notice Handle ETH-WETH converting for users." }, "fullyImplemented": true, "id": 1166, "linearizedBaseContracts": [ 1166, 11296 ], "name": "DODOEthProxy", "nodeType": "ContractDefinition", "nodes": [ { "id": 30, "libraryName": { "contractScope": null, "id": 28, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11440, "src": "689:9:0", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$11440", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", "src": "683:27:0", "typeName": { "contractScope": null, "id": 29, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 10607, "src": "703:6:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } } }, { "id": 33, "libraryName": { "contractScope": null, "id": 31, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11623, "src": "721:8:0", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$11623", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "715:27:0", "typeName": { "id": 32, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "734:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "functionSelector": "39239f72", "id": 35, "mutability": "mutable", "name": "_DODO_ZOO_", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1166, "src": "748:25:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 34, "name": "address", "nodeType": "ElementaryTypeName", "src": "748:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "0d4eec8f", "id": 37, "mutability": "mutable", "name": "_WETH_", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1166, "src": "779:29:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 36, "name": "address", "nodeType": "ElementaryTypeName", "src": "779:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "value": null, "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 47, "name": "ProxySellEthToToken", "nodeType": "EventDefinition", "parameters": { "id": 46, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39, "indexed": true, "mutability": "mutable", "name": "seller", "nodeType": "VariableDeclaration", "overrides": null, "scope": 47, "src": "891:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 38, "name": "address", "nodeType": "ElementaryTypeName", "src": "891:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 41, "indexed": true, "mutability": "mutable", "name": "quoteToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 47, "src": "923:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 40, "name": "address", "nodeType": "ElementaryTypeName", "src": "923:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 43, "indexed": false, "mutability": "mutable", "name": "payEth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 47, "src": "959:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 42, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "959:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 45, "indexed": false, "mutability": "mutable", "name": "receiveToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 47, "src": "983:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 44, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "983:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "881:128:0" }, "src": "856:154:0" }, { "anonymous": false, "documentation": null, "id": 57, "name": "ProxyBuyEthWithToken", "nodeType": "EventDefinition", "parameters": { "id": 56, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49, "indexed": true, "mutability": "mutable", "name": "buyer", "nodeType": "VariableDeclaration", "overrides": null, "scope": 57, "src": "1052:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 48, "name": "address", "nodeType": "ElementaryTypeName", "src": "1052:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 51, "indexed": true, "mutability": "mutable", "name": "quoteToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 57, "src": "1083:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 50, "name": "address", "nodeType": "ElementaryTypeName", "src": "1083:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 53, "indexed": false, "mutability": "mutable", "name": "receiveEth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 57, "src": "1119:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 52, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1119:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 55, "indexed": false, "mutability": "mutable", "name": "payToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 57, "src": "1147:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 54, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1147:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1042:127:0" }, "src": "1016:154:0" }, { "anonymous": false, "documentation": null, "id": 67, "name": "ProxySellTokenToEth", "nodeType": "EventDefinition", "parameters": { "id": 66, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 59, "indexed": true, "mutability": "mutable", "name": "seller", "nodeType": "VariableDeclaration", "overrides": null, "scope": 67, "src": "1211:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 58, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 61, "indexed": true, "mutability": "mutable", "name": "baseToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 67, "src": "1243:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 60, "name": "address", "nodeType": "ElementaryTypeName", "src": "1243:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 63, "indexed": false, "mutability": "mutable", "name": "payToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 67, "src": "1278:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 62, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1278:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 65, "indexed": false, "mutability": "mutable", "name": "receiveEth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 67, "src": "1304:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 64, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1304:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1201:127:0" }, "src": "1176:153:0" }, { "anonymous": false, "documentation": null, "id": 77, "name": "ProxyBuyTokenWithEth", "nodeType": "EventDefinition", "parameters": { "id": 76, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 69, "indexed": true, "mutability": "mutable", "name": "buyer", "nodeType": "VariableDeclaration", "overrides": null, "scope": 77, "src": "1371:21:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 68, "name": "address", "nodeType": "ElementaryTypeName", "src": "1371:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 71, "indexed": true, "mutability": "mutable", "name": "baseToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 77, "src": "1402:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 70, "name": "address", "nodeType": "ElementaryTypeName", "src": "1402:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 73, "indexed": false, "mutability": "mutable", "name": "receiveToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 77, "src": "1437:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 72, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1437:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 75, "indexed": false, "mutability": "mutable", "name": "payEth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 77, "src": "1467:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 74, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1467:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1361:126:0" }, "src": "1335:153:0" }, { "anonymous": false, "documentation": null, "id": 85, "name": "ProxyDepositEthAsBase", "nodeType": "EventDefinition", "parameters": { "id": 84, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 79, "indexed": true, "mutability": "mutable", "name": "lp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 85, "src": "1522:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 78, "name": "address", "nodeType": "ElementaryTypeName", "src": "1522:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 81, "indexed": true, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 85, "src": "1542:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 80, "name": "address", "nodeType": "ElementaryTypeName", "src": "1542:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 83, "indexed": false, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 85, "src": "1564:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 82, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1564:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1521:61:0" }, "src": "1494:89:0" }, { "anonymous": false, "documentation": null, "id": 93, "name": "ProxyWithdrawEthAsBase", "nodeType": "EventDefinition", "parameters": { "id": 92, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 87, "indexed": true, "mutability": "mutable", "name": "lp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 93, "src": "1618:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86, "name": "address", "nodeType": "ElementaryTypeName", "src": "1618:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 89, "indexed": true, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 93, "src": "1638:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 88, "name": "address", "nodeType": "ElementaryTypeName", "src": "1638:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 91, "indexed": false, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 93, "src": "1660:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 90, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1660:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1617:61:0" }, "src": "1589:90:0" }, { "anonymous": false, "documentation": null, "id": 101, "name": "ProxyDepositEthAsQuote", "nodeType": "EventDefinition", "parameters": { "id": 100, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 95, "indexed": true, "mutability": "mutable", "name": "lp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 101, "src": "1714:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 94, "name": "address", "nodeType": "ElementaryTypeName", "src": "1714:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 97, "indexed": true, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 101, "src": "1734:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 96, "name": "address", "nodeType": "ElementaryTypeName", "src": "1734:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 99, "indexed": false, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 101, "src": "1756:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 98, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1756:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1713:61:0" }, "src": "1685:90:0" }, { "anonymous": false, "documentation": null, "id": 109, "name": "ProxyWithdrawEthAsQuote", "nodeType": "EventDefinition", "parameters": { "id": 108, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 103, "indexed": true, "mutability": "mutable", "name": "lp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 109, "src": "1811:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 102, "name": "address", "nodeType": "ElementaryTypeName", "src": "1811:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 105, "indexed": true, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 109, "src": "1831:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 104, "name": "address", "nodeType": "ElementaryTypeName", "src": "1831:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 107, "indexed": false, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 109, "src": "1853:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 106, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1853:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1810:61:0" }, "src": "1781:91:0" }, { "body": { "id": 124, "nodeType": "Block", "src": "1980:60:0", "statements": [ { "expression": { "argumentTypes": null, "id": 118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 116, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "1990:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 117, "name": "dodoZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "2003:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1990:20:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 119, "nodeType": "ExpressionStatement", "src": "1990:20:0" }, { "expression": { "argumentTypes": null, "id": 122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 120, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2020:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 121, "name": "weth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 113, "src": "2029:4:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2020:13:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 123, "nodeType": "ExpressionStatement", "src": "2020:13:0" } ] }, "documentation": null, "id": 125, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 114, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 111, "mutability": "mutable", "name": "dodoZoo", "nodeType": "VariableDeclaration", "overrides": null, "scope": 125, "src": "1934:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110, "name": "address", "nodeType": "ElementaryTypeName", "src": "1934:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 113, "mutability": "mutable", "name": "weth", "nodeType": "VariableDeclaration", "overrides": null, "scope": 125, "src": "1951:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 112, "name": "address", "nodeType": "ElementaryTypeName", "src": "1951:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "value": null, "visibility": "internal" } ], "src": "1933:39:0" }, "returnParameters": { "id": 115, "nodeType": "ParameterList", "parameters": [], "src": "1980:0:0" }, "scope": 1166, "src": "1922:118:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 136, "nodeType": "Block", "src": "2074:70:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 129, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2092:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2092:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 131, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2106:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2092:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "57455f53415645445f594f55525f4554485f3a29", "id": 133, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2114:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b9018661e4ed999153ca4be95c265ddafe03fe302834ed23184dd715a8b0a018", "typeString": "literal_string \"WE_SAVED_YOUR_ETH_:)\"" }, "value": "WE_SAVED_YOUR_ETH_:)" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b9018661e4ed999153ca4be95c265ddafe03fe302834ed23184dd715a8b0a018", "typeString": "literal_string \"WE_SAVED_YOUR_ETH_:)\"" } ], "id": 128, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2084:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 134, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2084:53:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 135, "nodeType": "ExpressionStatement", "src": "2084:53:0" } ] }, "documentation": null, "id": 137, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 126, "nodeType": "ParameterList", "parameters": [], "src": "2054:2:0" }, "returnParameters": { "id": 127, "nodeType": "ParameterList", "parameters": [], "src": "2074:0:0" }, "scope": 1166, "src": "2046:98:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 148, "nodeType": "Block", "src": "2177:70:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "id": 144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 141, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2195:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2195:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 143, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2209:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2195:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "57455f53415645445f594f55525f4554485f3a29", "id": 145, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2217:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b9018661e4ed999153ca4be95c265ddafe03fe302834ed23184dd715a8b0a018", "typeString": "literal_string \"WE_SAVED_YOUR_ETH_:)\"" }, "value": "WE_SAVED_YOUR_ETH_:)" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b9018661e4ed999153ca4be95c265ddafe03fe302834ed23184dd715a8b0a018", "typeString": "literal_string \"WE_SAVED_YOUR_ETH_:)\"" } ], "id": 140, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2187:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 146, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2187:53:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 147, "nodeType": "ExpressionStatement", "src": "2187:53:0" } ] }, "documentation": null, "id": 149, "implemented": true, "kind": "receive", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 138, "nodeType": "ParameterList", "parameters": [], "src": "2157:2:0" }, "returnParameters": { "id": 139, "nodeType": "ParameterList", "parameters": [], "src": "2177:0:0" }, "scope": 1166, "src": "2150:97:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 234, "nodeType": "Block", "src": "2455:604:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 163, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2473:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2473:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 165, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2486:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2473:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4554485f414d4f554e545f4e4f545f4d41544348", "id": 167, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2497:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" }, "value": "ETH_AMOUNT_NOT_MATCH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" } ], "id": 162, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2465:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2465:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 169, "nodeType": "ExpressionStatement", "src": "2465:55:0" }, { "assignments": [ 171 ], "declarations": [ { "constant": false, "id": 171, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 234, "src": "2530:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 170, "name": "address", "nodeType": "ElementaryTypeName", "src": "2530:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 179, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 176, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2574:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 177, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, "src": "2582:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 173, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "2554:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 172, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "2545:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2545:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "2545:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 178, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2545:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2530:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 186, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 181, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "2618:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2634:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 183, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2626:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 182, "name": "address", "nodeType": "ElementaryTypeName", "src": "2626:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2626:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2618:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 187, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2638:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 180, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2610:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2610:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 189, "nodeType": "ExpressionStatement", "src": "2610:45:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 191, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2671:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 190, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "2665:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2665:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 10672, "src": "2665:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "id": 194, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2694:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "2665:39:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 196, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2665:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 197, "nodeType": "ExpressionStatement", "src": "2665:41:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 202, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "2738:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 203, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2744:9:0", "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": 199, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "2722:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 198, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "2716:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2716:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 10658, "src": "2716:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 204, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2716:38:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 205, "nodeType": "ExpressionStatement", "src": "2716:38:0" }, { "expression": { "argumentTypes": null, "id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 206, "name": "receiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "2764:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 211, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2811:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 212, "name": "minReceiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 155, "src": "2822:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2845:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 208, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 171, "src": "2791:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 207, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "2785:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2785:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sellBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10396, "src": "2785:25:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,bytes memory) external returns (uint256)" } }, "id": 214, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2785:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2764:84:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 216, "nodeType": "ExpressionStatement", "src": "2764:84:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 218, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, "src": "2871:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 219, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2890:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 220, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2890:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 221, "name": "receiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "2902:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 217, "name": "_transferOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "2858:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 222, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2858:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 223, "nodeType": "ExpressionStatement", "src": "2858:63:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 225, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2956:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2956:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 227, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 151, "src": "2968:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 228, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 153, "src": "2987:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 229, "name": "receiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "2998:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 224, "name": "ProxySellEthToToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, "src": "2936:19:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 230, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2936:81:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 231, "nodeType": "EmitStatement", "src": "2931:86:0" }, { "expression": { "argumentTypes": null, "id": 232, "name": "receiveTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 160, "src": "3034:18:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 161, "id": 233, "nodeType": "Return", "src": "3027:25:0" } ] }, "documentation": null, "functionSelector": "e5134628", "id": 235, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 158, "modifierName": { "argumentTypes": null, "id": 157, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "2401:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2401:16:0" } ], "name": "sellEthToToken", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 156, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 151, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 235, "src": "2286:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 150, "name": "address", "nodeType": "ElementaryTypeName", "src": "2286:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 153, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 235, "src": "2321:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 152, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2321:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 155, "mutability": "mutable", "name": "minReceiveTokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 235, "src": "2348:29:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 154, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2348:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2276:107:0" }, "returnParameters": { "id": 161, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 160, "mutability": "mutable", "name": "receiveTokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 235, "src": "2427:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 159, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2427:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2426:28:0" }, "scope": 1166, "src": "2253:806:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 326, "nodeType": "Block", "src": "3252:621:0", "statements": [ { "assignments": [ 249 ], "declarations": [ { "constant": false, "id": 249, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 326, "src": "3262:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 248, "name": "address", "nodeType": "ElementaryTypeName", "src": "3262:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 257, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 254, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "3306:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 255, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 237, "src": "3314:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 251, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "3286:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 250, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "3277:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 252, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3277:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 253, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "3277:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 256, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3277:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "3262:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 259, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "3350:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3366:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 261, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3358:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 260, "name": "address", "nodeType": "ElementaryTypeName", "src": "3358:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3358:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3350:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 265, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3370:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 258, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3342:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 266, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3342:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 267, "nodeType": "ExpressionStatement", "src": "3342:45:0" }, { "expression": { "argumentTypes": null, "id": 275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 268, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3397:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 273, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3444:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 270, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "3420:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 269, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "3414:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 271, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3414:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "queryBuyBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10421, "src": "3414:29:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, "id": 274, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3414:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3397:57:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 276, "nodeType": "ExpressionStatement", "src": "3397:57:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 278, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 237, "src": "3476:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 279, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3495:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 280, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3495:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 281, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3507:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 277, "name": "_transferIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "3464:11:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 282, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3464:58:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 283, "nodeType": "ExpressionStatement", "src": "3464:58:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 288, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "3570:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 289, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3576:14:0", "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": 285, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 237, "src": "3539:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 284, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "3532:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3532:25:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeApprove", "nodeType": "MemberAccess", "referencedDeclaration": 11396, "src": "3532:37:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10607_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10607_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 290, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3532:59:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 291, "nodeType": "ExpressionStatement", "src": "3532:59:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 296, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3626:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 297, "name": "maxPayTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 241, "src": "3637:17:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 298, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3656:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 293, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 249, "src": "3607:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 292, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "3601:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 294, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3601:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "buyBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10407, "src": "3601:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,bytes memory) external returns (uint256)" } }, "id": 299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3601:58:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 300, "nodeType": "ExpressionStatement", "src": "3601:58:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 305, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3692:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 302, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "3675:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 301, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "3669:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 303, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3669:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "3669:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3669:33:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 307, "nodeType": "ExpressionStatement", "src": "3669:33:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 313, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3732:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 308, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3712:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3712:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3712:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 314, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3712:30:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 315, "nodeType": "ExpressionStatement", "src": "3712:30:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 317, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3778:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3778:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 319, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 237, "src": "3790:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 320, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 239, "src": "3809:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 321, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3820:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 316, "name": "ProxyBuyEthWithToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 57, "src": "3757:20:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 322, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3757:78:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 323, "nodeType": "EmitStatement", "src": "3752:83:0" }, { "expression": { "argumentTypes": null, "id": 324, "name": "payTokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 246, "src": "3852:14:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 247, "id": 325, "nodeType": "Return", "src": "3845:21:0" } ] }, "documentation": null, "functionSelector": "e8d522bb", "id": 327, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 244, "modifierName": { "argumentTypes": null, "id": 243, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "3202:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3202:16:0" } ], "name": "buyEthWithToken", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 242, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 237, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 327, "src": "3099:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 236, "name": "address", "nodeType": "ElementaryTypeName", "src": "3099:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 239, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 327, "src": "3134:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 238, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3134:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 241, "mutability": "mutable", "name": "maxPayTokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 327, "src": "3161:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 240, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3161:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3089:103:0" }, "returnParameters": { "id": 247, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 246, "mutability": "mutable", "name": "payTokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 327, "src": "3228:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 245, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3228:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3227:24:0" }, "scope": 1166, "src": "3065:808:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 411, "nodeType": "Block", "src": "4070:587:0", "statements": [ { "assignments": [ 341 ], "declarations": [ { "constant": false, "id": 341, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 411, "src": "4080:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 340, "name": "address", "nodeType": "ElementaryTypeName", "src": "4080:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 349, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 346, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 329, "src": "4124:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 347, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "4142:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 343, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "4104:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 342, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4095:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 344, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4095:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 345, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "4095:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 348, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4095:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4080:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 351, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "4167:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 354, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4183:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 353, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4175:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 352, "name": "address", "nodeType": "ElementaryTypeName", "src": "4175:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4175:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "4167:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 357, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4187:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 350, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "4159:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 358, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4159:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 359, "nodeType": "ExpressionStatement", "src": "4159:45:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 364, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "4251:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 365, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "4257:11:0", "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": 361, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 329, "src": "4221:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 360, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "4214:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 362, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4214:24:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeApprove", "nodeType": "MemberAccess", "referencedDeclaration": 11396, "src": "4214:36:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10607_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10607_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 366, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4214:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 367, "nodeType": "ExpressionStatement", "src": "4214:55:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 369, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 329, "src": "4291:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 370, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4309:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 371, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4309:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 372, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "4321:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 368, "name": "_transferIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1147, "src": "4279:11:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 373, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4279:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 374, "nodeType": "ExpressionStatement", "src": "4279:54:0" }, { "expression": { "argumentTypes": null, "id": 384, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 375, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4343:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 380, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "4388:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 381, "name": "minReceiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 333, "src": "4401:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4422:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 377, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 341, "src": "4368:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 376, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "4362:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 378, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4362:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sellBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10396, "src": "4362:25:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,bytes memory) external returns (uint256)" } }, "id": 383, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4362:63:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4343:82:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 385, "nodeType": "ExpressionStatement", "src": "4343:82:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 390, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4458:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 387, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "4441:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 386, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "4435:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 388, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4435:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 389, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "4435:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 391, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4435:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 392, "nodeType": "ExpressionStatement", "src": "4435:40:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 398, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4505:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 393, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4485:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4485:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4485:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 399, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4485:37:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 400, "nodeType": "ExpressionStatement", "src": "4485:37:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 402, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4557:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4557:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 404, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 329, "src": "4569:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 405, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 331, "src": "4587:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 406, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4600:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 401, "name": "ProxySellTokenToEth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 67, "src": "4537:19:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4537:80:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 408, "nodeType": "EmitStatement", "src": "4532:85:0" }, { "expression": { "argumentTypes": null, "id": 409, "name": "receiveEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "4634:16:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 339, "id": 410, "nodeType": "Return", "src": "4627:23:0" } ] }, "documentation": null, "functionSelector": "d668e026", "id": 412, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 336, "modifierName": { "argumentTypes": null, "id": 335, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "4018:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4018:16:0" } ], "name": "sellTokenToEth", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 334, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 329, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 412, "src": "3912:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 328, "name": "address", "nodeType": "ElementaryTypeName", "src": "3912:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 331, "mutability": "mutable", "name": "tokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 412, "src": "3946:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 330, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3946:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 333, "mutability": "mutable", "name": "minReceiveEthAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 412, "src": "3975:27:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 332, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3975:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3902:106:0" }, "returnParameters": { "id": 339, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 338, "mutability": "mutable", "name": "receiveEthAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 412, "src": "4044:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 337, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4044:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4043:26:0" }, "scope": 1166, "src": "3879:778:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 524, "nodeType": "Block", "src": "4855:775:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 426, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4873:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 427, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4873:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 428, "name": "maxPayEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 418, "src": "4886:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4873:28:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4554485f414d4f554e545f4e4f545f4d41544348", "id": 430, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4903:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" }, "value": "ETH_AMOUNT_NOT_MATCH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" } ], "id": 425, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "4865:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4865:61:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 432, "nodeType": "ExpressionStatement", "src": "4865:61:0" }, { "assignments": [ 434 ], "declarations": [ { "constant": false, "id": 434, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 524, "src": "4936:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 433, "name": "address", "nodeType": "ElementaryTypeName", "src": "4936:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 442, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 439, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 414, "src": "4980:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 440, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "4998:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 436, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "4960:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 435, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "4951:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 437, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4951:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 438, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "4951:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4951:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4936:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 449, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 444, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "5023:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 447, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5039:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 446, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5031:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 445, "name": "address", "nodeType": "ElementaryTypeName", "src": "5031:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 448, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5031:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "5023:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5043:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 443, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5015:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5015:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 452, "nodeType": "ExpressionStatement", "src": "5015:45:0" }, { "expression": { "argumentTypes": null, "id": 460, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 453, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5070:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 458, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "5115:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 455, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "5091:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 454, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "5085:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 456, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5085:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 457, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "queryBuyBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10421, "src": "5085:29:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view external returns (uint256)" } }, "id": 459, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5085:42:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5070:57:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 461, "nodeType": "ExpressionStatement", "src": "5070:57:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 463, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "5143:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 462, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "5137:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 464, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5137:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 10672, "src": "5137:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "id": 466, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5166:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "5137:42:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 468, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5137:44:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 469, "nodeType": "ExpressionStatement", "src": "5137:44:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 474, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "5213:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 475, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5219:12:0", "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": 471, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "5197:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 470, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "5191:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 472, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5191:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 10658, "src": "5191:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 476, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5191:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 477, "nodeType": "ExpressionStatement", "src": "5191:41:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 482, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "5267:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 483, "name": "maxPayEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 418, "src": "5280:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "", "id": 484, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5297:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 479, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 434, "src": "5248:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 478, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "5242:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5242:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "buyBaseToken", "nodeType": "MemberAccess", "referencedDeclaration": 10407, "src": "5242:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,bytes memory) external returns (uint256)" } }, "id": 485, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5242:58:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 486, "nodeType": "ExpressionStatement", "src": "5242:58:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 488, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 414, "src": "5323:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 489, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5341:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5341:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 491, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "5353:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 487, "name": "_transferOut", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1165, "src": "5310:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 492, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5310:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 493, "nodeType": "ExpressionStatement", "src": "5310:55:0" }, { "assignments": [ 495 ], "declarations": [ { "constant": false, "id": 495, "mutability": "mutable", "name": "refund", "nodeType": "VariableDeclaration", "overrides": null, "scope": 524, "src": "5375:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 494, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5375:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 500, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 498, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5412:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 496, "name": "maxPayEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 418, "src": "5392:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 497, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 11557, "src": "5392:19:0", "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": 499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5392:33:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "5375:50:0" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 501, "name": "refund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 495, "src": "5439:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 502, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5448:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "5439:10:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 513, "nodeType": "IfStatement", "src": "5435:68:0", "trueBody": { "id": 512, "nodeType": "Block", "src": "5451:52:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 509, "name": "refund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 495, "src": "5485:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 504, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5465:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5465:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 508, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5465:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5465:27:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 511, "nodeType": "ExpressionStatement", "src": "5465:27:0" } ] } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 515, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5538:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5538:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 517, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 414, "src": "5550:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 518, "name": "tokenAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 416, "src": "5568:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 519, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5581:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 514, "name": "ProxyBuyTokenWithEth", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "5517:20:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256,uint256)" } }, "id": 520, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5517:77:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 521, "nodeType": "EmitStatement", "src": "5512:82:0" }, { "expression": { "argumentTypes": null, "id": 522, "name": "payEthAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 423, "src": "5611:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 424, "id": 523, "nodeType": "Return", "src": "5604:19:0" } ] }, "documentation": null, "functionSelector": "33e00053", "id": 525, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 421, "modifierName": { "argumentTypes": null, "id": 420, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "4807:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4807:16:0" } ], "name": "buyTokenWithEth", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 419, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 414, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 525, "src": "4697:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 413, "name": "address", "nodeType": "ElementaryTypeName", "src": "4697:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 416, "mutability": "mutable", "name": "tokenAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 525, "src": "4731:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 415, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4731:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 418, "mutability": "mutable", "name": "maxPayEthAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 525, "src": "4760:23:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 417, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4760:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4687:102:0" }, "returnParameters": { "id": 424, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 423, "mutability": "mutable", "name": "payEthAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 525, "src": "4833:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 422, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4833:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4832:22:0" }, "scope": 1166, "src": "4663:967:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 594, "nodeType": "Block", "src": "5770:429:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 535, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5788:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5788:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 537, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "5801:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5788:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4554485f414d4f554e545f4e4f545f4d41544348", "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5812:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" }, "value": "ETH_AMOUNT_NOT_MATCH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" } ], "id": 534, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5780:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5780:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 541, "nodeType": "ExpressionStatement", "src": "5780:55:0" }, { "assignments": [ 543 ], "declarations": [ { "constant": false, "id": 543, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 594, "src": "5845:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 542, "name": "address", "nodeType": "ElementaryTypeName", "src": "5845:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 551, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 548, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "5889:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 549, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 529, "src": "5897:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 545, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "5869:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 544, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "5860:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5860:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 547, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "5860:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5860:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5845:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 553, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "5933:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5949:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 555, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5941:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 554, "name": "address", "nodeType": "ElementaryTypeName", "src": "5941:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 557, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5941:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "5933:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 559, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5953:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 552, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5925:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 560, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5925:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 561, "nodeType": "ExpressionStatement", "src": "5925:45:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 563, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "5986:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 562, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "5980:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 564, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5980:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 10672, "src": "5980:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "id": 566, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "6009:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "5980:39:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5980:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 569, "nodeType": "ExpressionStatement", "src": "5980:41:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 574, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "6053:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 575, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "6059:9:0", "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": 571, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "6037:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 570, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "6031:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6031:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 10658, "src": "6031:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6031:38:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 577, "nodeType": "ExpressionStatement", "src": "6031:38:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 582, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6105:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6105:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 584, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "6117:9:0", "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": 579, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "6085:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 578, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "6079:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6079:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "depositBaseTo", "nodeType": "MemberAccess", "referencedDeclaration": 10437, "src": "6079:25:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) external returns (uint256)" } }, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6079:48:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 586, "nodeType": "ExpressionStatement", "src": "6079:48:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 588, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6164:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6164:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 590, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 543, "src": "6176:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 591, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 527, "src": "6182:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 587, "name": "ProxyDepositEthAsBase", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "6142:21:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 592, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6142:50:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 593, "nodeType": "EmitStatement", "src": "6137:55:0" } ] }, "documentation": null, "functionSelector": "b56a1d03", "id": 595, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 532, "modifierName": { "argumentTypes": null, "id": 531, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "5749:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "5749:16:0" } ], "name": "depositEthAsBase", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 530, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 527, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 595, "src": "5662:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 526, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5662:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 529, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 595, "src": "5681:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 528, "name": "address", "nodeType": "ElementaryTypeName", "src": "5681:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5661:46:0" }, "returnParameters": { "id": 533, "nodeType": "ParameterList", "parameters": [], "src": "5770:0:0" }, "scope": 1166, "src": "5636:563:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 721, "nodeType": "Block", "src": "6365:1029:0", "statements": [ { "assignments": [ 607 ], "declarations": [ { "constant": false, "id": 607, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 721, "src": "6375:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 606, "name": "address", "nodeType": "ElementaryTypeName", "src": "6375:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 615, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 612, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "6419:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 613, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "6427:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 609, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "6399:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 608, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "6390:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6390:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "6390:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 614, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6390:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6375:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 617, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 607, "src": "6463:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 620, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6479:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6471:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 618, "name": "address", "nodeType": "ElementaryTypeName", "src": "6471:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6471:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6463:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6483:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 616, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "6455:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 624, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6455:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 625, "nodeType": "ExpressionStatement", "src": "6455:45:0" }, { "assignments": [ 627 ], "declarations": [ { "constant": false, "id": 627, "mutability": "mutable", "name": "ethLpToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 721, "src": "6510:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 626, "name": "address", "nodeType": "ElementaryTypeName", "src": "6510:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 633, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 629, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 607, "src": "6537:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 628, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "6531:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6531:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_BASE_CAPITAL_TOKEN_", "nodeType": "MemberAccess", "referencedDeclaration": 10475, "src": "6531:32:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 632, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6531:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6510:55:0" }, { "assignments": [ 635 ], "declarations": [ { "constant": false, "id": 635, "mutability": "mutable", "name": "lpBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 721, "src": "6621:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 634, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6621:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 643, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 640, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6670:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6670:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 637, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "6648:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 636, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "6641:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 638, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6641:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "6641:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6641:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "6621:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 648, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6723:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6723:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 652, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "6743:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 651, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6735:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 650, "name": "address", "nodeType": "ElementaryTypeName", "src": "6735:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 653, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6735:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 654, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "6750:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 645, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "6698:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 644, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "6691:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 646, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6691:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 10606, "src": "6691:31:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6691:69:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 656, "nodeType": "ExpressionStatement", "src": "6691:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 661, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 597, "src": "6795:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 658, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 607, "src": "6776:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 657, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "6770:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 659, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6770:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdrawBase", "nodeType": "MemberAccess", "referencedDeclaration": 10444, "src": "6770:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) external returns (uint256)" } }, "id": 662, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6770:35:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 663, "nodeType": "ExpressionStatement", "src": "6770:35:0" }, { "expression": { "argumentTypes": null, "id": 674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 664, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "6869:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 671, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "6918:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 670, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6910:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 669, "name": "address", "nodeType": "ElementaryTypeName", "src": "6910:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 672, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6910:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 666, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "6888:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 665, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "6881:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 667, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6881:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "6881:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6881:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6869:55:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 675, "nodeType": "ExpressionStatement", "src": "6869:55:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 680, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "6962:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 681, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6962:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 682, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 635, "src": "6974:9:0", "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": 677, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "6941:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 676, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "6934:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 678, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6934:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 679, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 10574, "src": "6934:27:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 683, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6934:50:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 684, "nodeType": "ExpressionStatement", "src": "6934:50:0" }, { "assignments": [ 686 ], "declarations": [ { "constant": false, "id": 686, "mutability": "mutable", "name": "wethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 721, "src": "7148:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 685, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7148:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 696, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 693, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "7202:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 692, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7194:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 691, "name": "address", "nodeType": "ElementaryTypeName", "src": "7194:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 694, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7194:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 688, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "7176:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 687, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "7169:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 689, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7169:14:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "7169:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7169:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7148:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 701, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "7241:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 698, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "7224:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 697, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "7218:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7218:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 700, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "7218:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 702, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7218:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 703, "nodeType": "ExpressionStatement", "src": "7218:34:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 709, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "7282:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 704, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7262:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7262:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 708, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7262:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7262:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 711, "nodeType": "ExpressionStatement", "src": "7262:31:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 713, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7331:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7331:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 715, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 607, "src": "7343:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 716, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "7349:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 712, "name": "ProxyWithdrawEthAsBase", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "7308:22:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 717, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7308:52:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 718, "nodeType": "EmitStatement", "src": "7303:57:0" }, { "expression": { "argumentTypes": null, "id": 719, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "7377:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 605, "id": 720, "nodeType": "Return", "src": "7370:17:0" } ] }, "documentation": null, "functionSelector": "827df194", "id": 722, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 602, "modifierName": { "argumentTypes": null, "id": 601, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "6303:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "6303:16:0" } ], "name": "withdrawEthAsBase", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 600, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 597, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 722, "src": "6232:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 596, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6232:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 599, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 722, "src": "6251:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 598, "name": "address", "nodeType": "ElementaryTypeName", "src": "6251:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "6231:46:0" }, "returnParameters": { "id": 605, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 604, "mutability": "mutable", "name": "withdrawAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 722, "src": "6337:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6337:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "6336:24:0" }, "scope": 1166, "src": "6205:1189:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 824, "nodeType": "Block", "src": "7544:844:0", "statements": [ { "assignments": [ 732 ], "declarations": [ { "constant": false, "id": 732, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 824, "src": "7554:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 731, "name": "address", "nodeType": "ElementaryTypeName", "src": "7554:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 740, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 737, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "7598:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 738, "name": "quoteTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "7606:17:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 734, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "7578:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 733, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "7569:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 735, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7569:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 736, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "7569:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 739, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7569:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "7554:70:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 747, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 742, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "7642:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 745, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7658:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 744, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7650:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 743, "name": "address", "nodeType": "ElementaryTypeName", "src": "7650:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7650:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "7642:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7662:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 741, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "7634:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 749, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7634:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 750, "nodeType": "ExpressionStatement", "src": "7634:45:0" }, { "assignments": [ 752 ], "declarations": [ { "constant": false, "id": 752, "mutability": "mutable", "name": "ethLpToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 824, "src": "7689:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 751, "name": "address", "nodeType": "ElementaryTypeName", "src": "7689:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 758, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 754, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "7716:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 753, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "7710:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 755, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7710:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_BASE_CAPITAL_TOKEN_", "nodeType": "MemberAccess", "referencedDeclaration": 10475, "src": "7710:32:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7710:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "7689:55:0" }, { "assignments": [ 760 ], "declarations": [ { "constant": false, "id": 760, "mutability": "mutable", "name": "lpBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 824, "src": "7800:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 759, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7800:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 768, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 765, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7849:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7849:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 762, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 752, "src": "7827:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 761, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "7820:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 763, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7820:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 764, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "7820:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 767, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7820:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7800:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 773, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7902:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 774, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7902:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 777, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "7922:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 776, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7914:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 775, "name": "address", "nodeType": "ElementaryTypeName", "src": "7914:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 778, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7914:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 779, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 760, "src": "7929:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 770, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 752, "src": "7877:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 769, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "7870:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 771, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7870:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 772, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 10606, "src": "7870:31:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7870:69:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 781, "nodeType": "ExpressionStatement", "src": "7870:69:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 783, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "7955:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 782, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "7949:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 784, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7949:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 785, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdrawAllBase", "nodeType": "MemberAccess", "referencedDeclaration": 10449, "src": "7949:27:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7949:29:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 787, "nodeType": "ExpressionStatement", "src": "7949:29:0" }, { "assignments": [ 789 ], "declarations": [ { "constant": false, "id": 789, "mutability": "mutable", "name": "wethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 824, "src": "8142:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 788, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8142:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 799, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 796, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8196:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 795, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8188:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 794, "name": "address", "nodeType": "ElementaryTypeName", "src": "8188:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 797, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8188:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 791, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8170:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 790, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "8163:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 792, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8163:14:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 793, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "8163:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 798, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8163:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8142:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 804, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "8235:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 801, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8218:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 800, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "8212:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8212:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "8212:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 805, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8212:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 806, "nodeType": "ExpressionStatement", "src": "8212:34:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 812, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "8276:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 807, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8256:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8256:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8256:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 813, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8256:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 814, "nodeType": "ExpressionStatement", "src": "8256:31:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 816, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8325:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 817, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8325:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 818, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 732, "src": "8337:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 819, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "8343:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 815, "name": "ProxyWithdrawEthAsBase", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 93, "src": "8302:22:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 820, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8302:52:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 821, "nodeType": "EmitStatement", "src": "8297:57:0" }, { "expression": { "argumentTypes": null, "id": 822, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 789, "src": "8371:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 730, "id": 823, "nodeType": "Return", "src": "8364:17:0" } ] }, "documentation": null, "functionSelector": "0ae4b86d", "id": 825, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 727, "modifierName": { "argumentTypes": null, "id": 726, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "7482:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "7482:16:0" } ], "name": "withdrawAllEthAsBase", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 725, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 724, "mutability": "mutable", "name": "quoteTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 825, "src": "7430:25:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 723, "name": "address", "nodeType": "ElementaryTypeName", "src": "7430:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "7429:27:0" }, "returnParameters": { "id": 730, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 729, "mutability": "mutable", "name": "withdrawAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 825, "src": "7516:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 728, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7516:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7515:24:0" }, "scope": 1166, "src": "7400:988:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 894, "nodeType": "Block", "src": "8528:430:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 835, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8546:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 836, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8546:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 837, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8559:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8546:22:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4554485f414d4f554e545f4e4f545f4d41544348", "id": 839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8570:22:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" }, "value": "ETH_AMOUNT_NOT_MATCH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_d5408d254f1034e2da4b0c813291506a8b1ca7462c38bae84bb9341f9e49201b", "typeString": "literal_string \"ETH_AMOUNT_NOT_MATCH\"" } ], "id": 834, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "8538:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 840, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8538:55:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 841, "nodeType": "ExpressionStatement", "src": "8538:55:0" }, { "assignments": [ 843 ], "declarations": [ { "constant": false, "id": 843, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 894, "src": "8603:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 842, "name": "address", "nodeType": "ElementaryTypeName", "src": "8603:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 851, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 848, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 829, "src": "8647:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 849, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8665:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 845, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "8627:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 844, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "8618:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8618:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "8618:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8618:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "8603:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 853, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "8690:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 856, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8706:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 855, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8698:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 854, "name": "address", "nodeType": "ElementaryTypeName", "src": "8698:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 857, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8698:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "8690:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 859, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8710:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 852, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "8682:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8682:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 861, "nodeType": "ExpressionStatement", "src": "8682:45:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 863, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8743:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 862, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "8737:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 864, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8737:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 10672, "src": "8737:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 867, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "id": 866, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8766:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "8737:39:0", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 868, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8737:41:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 869, "nodeType": "ExpressionStatement", "src": "8737:41:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 874, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "8810:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 875, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8816:9:0", "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": 871, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "8794:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 870, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "8788:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 872, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8788:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 873, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 10658, "src": "8788:21:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 876, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8788:38:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 877, "nodeType": "ExpressionStatement", "src": "8788:38:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 882, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8863:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8863:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 884, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8875:9:0", "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": 879, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "8842:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 878, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "8836:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 880, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8836:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "depositQuoteTo", "nodeType": "MemberAccess", "referencedDeclaration": 10458, "src": "8836:26:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (address,uint256) external returns (uint256)" } }, "id": 885, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8836:49:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 886, "nodeType": "ExpressionStatement", "src": "8836:49:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 888, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8923:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8923:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 890, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "8935:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 891, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 827, "src": "8941:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 887, "name": "ProxyDepositEthAsQuote", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 101, "src": "8900:22:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 892, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8900:51:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 893, "nodeType": "EmitStatement", "src": "8895:56:0" } ] }, "documentation": null, "functionSelector": "ba9344a4", "id": 895, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 832, "modifierName": { "argumentTypes": null, "id": 831, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "8507:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "8507:16:0" } ], "name": "depositEthAsQuote", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 830, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 827, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 895, "src": "8421:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 826, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8421:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 829, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 895, "src": "8440:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 828, "name": "address", "nodeType": "ElementaryTypeName", "src": "8440:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "8420:45:0" }, "returnParameters": { "id": 833, "nodeType": "ParameterList", "parameters": [], "src": "8528:0:0" }, "scope": 1166, "src": "8394:564:0", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 1021, "nodeType": "Block", "src": "9124:1031:0", "statements": [ { "assignments": [ 907 ], "declarations": [ { "constant": false, "id": 907, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1021, "src": "9134:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 906, "name": "address", "nodeType": "ElementaryTypeName", "src": "9134:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 915, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 912, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 899, "src": "9178:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 913, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "9196:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 909, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "9158:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 908, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "9149:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 910, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9149:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "9149:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9149:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "9134:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 917, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 907, "src": "9221:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 920, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9237:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 919, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9229:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 918, "name": "address", "nodeType": "ElementaryTypeName", "src": "9229:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 921, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9229:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "9221:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9241:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 916, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "9213:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9213:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 925, "nodeType": "ExpressionStatement", "src": "9213:45:0" }, { "assignments": [ 927 ], "declarations": [ { "constant": false, "id": 927, "mutability": "mutable", "name": "ethLpToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1021, "src": "9268:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 926, "name": "address", "nodeType": "ElementaryTypeName", "src": "9268:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 933, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 929, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 907, "src": "9295:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 928, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "9289:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 930, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9289:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 931, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_QUOTE_CAPITAL_TOKEN_", "nodeType": "MemberAccess", "referencedDeclaration": 10480, "src": "9289:33:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9289:35:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "9268:56:0" }, { "assignments": [ 935 ], "declarations": [ { "constant": false, "id": 935, "mutability": "mutable", "name": "lpBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1021, "src": "9380:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 934, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9380:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 943, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 940, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9429:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 941, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9429:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 937, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "9407:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 936, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9400:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 938, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9400:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 939, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "9400:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9400:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "9380:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 948, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9482:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9482:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 952, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "9502:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 951, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9494:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 950, "name": "address", "nodeType": "ElementaryTypeName", "src": "9494:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 953, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9494:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 954, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "9509:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 945, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "9457:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 944, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9450:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9450:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 947, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 10606, "src": "9450:31:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, "id": 955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9450:69:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 956, "nodeType": "ExpressionStatement", "src": "9450:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 961, "name": "ethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 897, "src": "9555:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 958, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 907, "src": "9535:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 957, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "9529:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 959, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9529:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdrawQuote", "nodeType": "MemberAccess", "referencedDeclaration": 10465, "src": "9529:25:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) external returns (uint256)" } }, "id": 962, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9529:36:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 963, "nodeType": "ExpressionStatement", "src": "9529:36:0" }, { "expression": { "argumentTypes": null, "id": 974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 964, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "9629:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 971, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "9678:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 970, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9670:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 969, "name": "address", "nodeType": "ElementaryTypeName", "src": "9670:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 972, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9670:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 966, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "9648:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 965, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9641:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9641:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 968, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "9641:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 973, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9641:43:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9629:55:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 975, "nodeType": "ExpressionStatement", "src": "9629:55:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 980, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9722:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 981, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9722:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 982, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "9734:9:0", "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": 977, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "9701:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 976, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9694:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9694:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 10574, "src": "9694:27:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9694:50:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 984, "nodeType": "ExpressionStatement", "src": "9694:50:0" }, { "assignments": [ 986 ], "declarations": [ { "constant": false, "id": 986, "mutability": "mutable", "name": "wethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1021, "src": "9908:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 985, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9908:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 996, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 993, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "9962:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 992, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9954:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 991, "name": "address", "nodeType": "ElementaryTypeName", "src": "9954:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 994, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9954:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 988, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "9936:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 987, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "9929:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 989, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9929:14:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 990, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "9929:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 995, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9929:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "9908:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1001, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "10001:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 998, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "9984:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 997, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "9978:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 999, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9978:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 1000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "9978:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 1002, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9978:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1003, "nodeType": "ExpressionStatement", "src": "9978:34:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1009, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "10042:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1004, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "10022:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10022:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 1008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10022:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 1010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10022:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1011, "nodeType": "ExpressionStatement", "src": "10022:31:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1013, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "10092:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10092:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1015, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 907, "src": "10104:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1016, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "10110:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1012, "name": "ProxyWithdrawEthAsQuote", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "10068:23:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1017, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10068:53:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1018, "nodeType": "EmitStatement", "src": "10063:58:0" }, { "expression": { "argumentTypes": null, "id": 1019, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 986, "src": "10138:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 905, "id": 1020, "nodeType": "Return", "src": "10131:17:0" } ] }, "documentation": null, "functionSelector": "770e96d3", "id": 1022, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 902, "modifierName": { "argumentTypes": null, "id": 901, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "9062:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "9062:16:0" } ], "name": "withdrawEthAsQuote", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 900, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 897, "mutability": "mutable", "name": "ethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1022, "src": "8992:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 896, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8992:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 899, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1022, "src": "9011:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 898, "name": "address", "nodeType": "ElementaryTypeName", "src": "9011:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "8991:45:0" }, "returnParameters": { "id": 905, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 904, "mutability": "mutable", "name": "withdrawAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1022, "src": "9096:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 903, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9096:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "9095:24:0" }, "scope": 1166, "src": "8964:1191:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 1124, "nodeType": "Block", "src": "10305:846:0", "statements": [ { "assignments": [ 1032 ], "declarations": [ { "constant": false, "id": 1032, "mutability": "mutable", "name": "DODO", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1124, "src": "10315:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1031, "name": "address", "nodeType": "ElementaryTypeName", "src": "10315:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1040, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1037, "name": "baseTokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1024, "src": "10359:16:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1038, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "10377:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1034, "name": "_DODO_ZOO_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35, "src": "10339:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1033, "name": "IDODOZoo", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24, "src": "10330:8:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODOZoo_$24_$", "typeString": "type(contract IDODOZoo)" } }, "id": 1035, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10330:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODOZoo_$24", "typeString": "contract IDODOZoo" } }, "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getDODO", "nodeType": "MemberAccess", "referencedDeclaration": 23, "src": "10330:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$", "typeString": "function (address,address) view external returns (address)" } }, "id": 1039, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10330:54:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "10315:69:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1047, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1042, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "10402:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10418:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 1044, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10410:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1043, "name": "address", "nodeType": "ElementaryTypeName", "src": "10410:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1046, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10410:10:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "10402:18:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "444f444f5f4e4f545f4558495354", "id": 1048, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10422:16:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" }, "value": "DODO_NOT_EXIST" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_1202b9edb667d72ea1db71fc4d3e81f26725f87fc79284471896f8edc4841ba9", "typeString": "literal_string \"DODO_NOT_EXIST\"" } ], "id": 1041, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "10394:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10394:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1050, "nodeType": "ExpressionStatement", "src": "10394:45:0" }, { "assignments": [ 1052 ], "declarations": [ { "constant": false, "id": 1052, "mutability": "mutable", "name": "ethLpToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1124, "src": "10449:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1051, "name": "address", "nodeType": "ElementaryTypeName", "src": "10449:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 1058, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1054, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "10476:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1053, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "10470:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10470:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 1056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "_QUOTE_CAPITAL_TOKEN_", "nodeType": "MemberAccess", "referencedDeclaration": 10480, "src": "10470:33:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 1057, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10470:35:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "10449:56:0" }, { "assignments": [ 1060 ], "declarations": [ { "constant": false, "id": 1060, "mutability": "mutable", "name": "lpBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1124, "src": "10561:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1059, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10561:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1068, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1065, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "10610:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10610:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1062, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "10588:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1061, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "10581:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1063, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10581:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "10581:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10581:40:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "10561:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1073, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "10663:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10663:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1077, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "10683:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 1076, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10675:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1075, "name": "address", "nodeType": "ElementaryTypeName", "src": "10675:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10675:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1079, "name": "lpBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1060, "src": "10690:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1070, "name": "ethLpToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "10638:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1069, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "10631:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10631:18:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 10606, "src": "10631:31:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10631:69:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1081, "nodeType": "ExpressionStatement", "src": "10631:69:0" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1083, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "10716:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1082, "name": "IDODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10491, "src": "10710:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IDODO_$10491_$", "typeString": "type(contract IDODO)" } }, "id": 1084, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10710:11:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IDODO_$10491", "typeString": "contract IDODO" } }, "id": 1085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdrawAllQuote", "nodeType": "MemberAccess", "referencedDeclaration": 10470, "src": "10710:28:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", "typeString": "function () external returns (uint256)" } }, "id": 1086, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10710:30:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1087, "nodeType": "ExpressionStatement", "src": "10710:30:0" }, { "assignments": [ 1089 ], "declarations": [ { "constant": false, "id": 1089, "mutability": "mutable", "name": "wethAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1124, "src": "10904:18:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1088, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10904:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1099, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1096, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "10958:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 1095, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10950:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1094, "name": "address", "nodeType": "ElementaryTypeName", "src": "10950:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1097, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10950:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1091, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "10932:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1090, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "10925:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10925:14:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1093, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 10564, "src": "10925:24:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10925:39:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "10904:60:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1104, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1089, "src": "10997:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1101, "name": "_WETH_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 37, "src": "10980:6:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1100, "name": "IWETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10678, "src": "10974:5:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IWETH_$10678_$", "typeString": "type(contract IWETH)" } }, "id": 1102, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10974:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IWETH_$10678", "typeString": "contract IWETH" } }, "id": 1103, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 10677, "src": "10974:22:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, "id": 1105, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10974:34:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1106, "nodeType": "ExpressionStatement", "src": "10974:34:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1112, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1089, "src": "11038:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1107, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11018:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11018:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 1111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11018:19:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 1113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11018:31:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1114, "nodeType": "ExpressionStatement", "src": "11018:31:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1116, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "11088:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "11088:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1118, "name": "DODO", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1032, "src": "11100:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1119, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1089, "src": "11106:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1115, "name": "ProxyWithdrawEthAsQuote", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109, "src": "11064:23:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11064:53:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1121, "nodeType": "EmitStatement", "src": "11059:58:0" }, { "expression": { "argumentTypes": null, "id": 1122, "name": "wethAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1089, "src": "11134:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1030, "id": 1123, "nodeType": "Return", "src": "11127:17:0" } ] }, "documentation": null, "functionSelector": "3cff9b56", "id": 1125, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 1027, "modifierName": { "argumentTypes": null, "id": 1026, "name": "preventReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11295, "src": "10243:16:0", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "10243:16:0" } ], "name": "withdrawAllEthAsQuote", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1025, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1024, "mutability": "mutable", "name": "baseTokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1125, "src": "10192:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1023, "name": "address", "nodeType": "ElementaryTypeName", "src": "10192:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "10191:26:0" }, "returnParameters": { "id": 1030, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1029, "mutability": "mutable", "name": "withdrawAmount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1125, "src": "10277:22:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1028, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10277:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "10276:24:0" }, "scope": 1166, "src": "10161:990:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 1146, "nodeType": "Block", "src": "11320:83:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1138, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1129, "src": "11368:4:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1141, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "11382:4:0", "typeDescriptions": { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_DODOEthProxy_$1166", "typeString": "contract DODOEthProxy" } ], "id": 1140, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11374:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1139, "name": "address", "nodeType": "ElementaryTypeName", "src": "11374:7:0", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11374:13:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1143, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1131, "src": "11389:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1135, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1127, "src": "11337:12:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1134, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "11330:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11330:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1137, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 11354, "src": "11330:37:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10607_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10607_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11330:66:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1145, "nodeType": "ExpressionStatement", "src": "11330:66:0" } ] }, "documentation": null, "id": 1147, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferIn", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1132, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1127, "mutability": "mutable", "name": "tokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1147, "src": "11238:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1126, "name": "address", "nodeType": "ElementaryTypeName", "src": "11238:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1129, "mutability": "mutable", "name": "from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1147, "src": "11268:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1128, "name": "address", "nodeType": "ElementaryTypeName", "src": "11268:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1131, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1147, "src": "11290:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1130, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11290:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "11228:82:0" }, "returnParameters": { "id": 1133, "nodeType": "ParameterList", "parameters": [], "src": "11320:0:0" }, "scope": 1166, "src": "11208:195:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1164, "nodeType": "Block", "src": "11520:62:0", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1160, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1151, "src": "11564:2:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1161, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1153, "src": "11568:6:0", "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": 1157, "name": "tokenAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1149, "src": "11537:12:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1156, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 10607, "src": "11530:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$10607_$", "typeString": "type(contract IERC20)" } }, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11530:20:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$10607", "typeString": "contract IERC20" } }, "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 11329, "src": "11530:33:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$10607_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$10607_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11530:45:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1163, "nodeType": "ExpressionStatement", "src": "11530:45:0" } ] }, "documentation": null, "id": 1165, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOut", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1154, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1149, "mutability": "mutable", "name": "tokenAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1165, "src": "11440:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1148, "name": "address", "nodeType": "ElementaryTypeName", "src": "11440:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1151, "mutability": "mutable", "name": "to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1165, "src": "11470:10:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1150, "name": "address", "nodeType": "ElementaryTypeName", "src": "11470:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1153, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1165, "src": "11490:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1152, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11490:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "11430:80:0" }, "returnParameters": { "id": 1155, "nodeType": "ParameterList", "parameters": [], "src": "11520:0:0" }, "scope": 1166, "src": "11409:173:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" } ], "scope": 1167, "src": "636:10948:0" } ], "src": "78:11507:0" }, "compiler": { "name": "solc", "version": "0.6.9+commit.3e3065ac.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-11-06T08:03:35.463Z", "devdoc": { "methods": {} }, "userdoc": { "methods": {} } }