{
  "contractName": "DepositWithdrawalProxy",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_dolomiteMargin",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "DOLOMITE_MARGIN",
      "outputs": [
        {
          "internalType": "contract IDolomiteMargin",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "PAYABLE_MARKET_ID",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "WRAPPED_PAYABLE_TOKEN",
      "outputs": [
        {
          "internalType": "contract IWETH",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "g_initialized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_payableToken",
          "type": "address"
        }
      ],
      "name": "initializePayableMarket",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_toAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "name": "depositWei",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_toAccountNumber",
          "type": "uint256"
        }
      ],
      "name": "depositPayable",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "name": "depositWeiIntoDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "depositPayableIntoDefaultAccount",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fromAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawWei",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fromAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawPayable",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawWeiFromDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawPayableFromDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_toAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountPar",
          "type": "uint256"
        }
      ],
      "name": "depositPar",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountPar",
          "type": "uint256"
        }
      ],
      "name": "depositParIntoDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fromAccountNumber",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountPar",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawPar",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountPar",
          "type": "uint256"
        },
        {
          "internalType": "enum AccountBalanceLib.BalanceCheckFlag",
          "name": "_balanceCheckFlag",
          "type": "uint8"
        }
      ],
      "name": "withdrawParFromDefaultAccount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dolomiteMargin\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PAYABLE_MARKET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"WRAPPED_PAYABLE_TOKEN\",\"outputs\":[{\"internalType\":\"contract IWETH\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountPar\",\"type\":\"uint256\"}],\"name\":\"depositPar\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountPar\",\"type\":\"uint256\"}],\"name\":\"depositParIntoDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"}],\"name\":\"depositPayable\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"depositPayableIntoDefaultAccount\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_toAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"}],\"name\":\"depositWei\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"}],\"name\":\"depositWeiIntoDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"g_initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_payableToken\",\"type\":\"address\"}],\"name\":\"initializePayableMarket\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountPar\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawPar\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountPar\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawParFromDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawPayable\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawPayableFromDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromAccountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawWei\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountWei\",\"type\":\"uint256\"},{\"internalType\":\"enum AccountBalanceLib.BalanceCheckFlag\",\"name\":\"_balanceCheckFlag\",\"type\":\"uint8\"}],\"name\":\"withdrawWeiFromDefaultAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite\",\"details\":\"Contract for depositing or withdrawing to/from Dolomite easily. This lowers gas costs on Arbitrum by minimizing     callData\",\"methods\":{},\"title\":\"DepositWithdrawalProxy\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/DepositWithdrawalProxy.sol\":\"DepositWithdrawalProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xe40babc0a6dd2a767d76f3e0f0a22de124c4c480f2b2227a7b924b44e57526ea\",\"urls\":[\"bzz-raw://458f7f1f16eacd4faae597090503dc1e58446e9d371640c77b2e01e3e3113f17\",\"dweb:/ipfs/QmXqTG4sWJeDh5XA286KarbqHT4qJ7m3dphS16enpqtQiX\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDepositWithdrawalProxy.sol\":{\"keccak256\":\"0x3602a42de25e379b39e1d4d1fbe5b65ffbbf119c8657350189e627bbcab6bbfd\",\"urls\":[\"bzz-raw://d2e4c68fe59712bd13ebb64e600035c7da3cbfb76d1600892ee6e5cf16900421\",\"dweb:/ipfs/QmYFTa5BTJtVMg7QCtXtRxm2aD1cK6bA2pCpUghahNUGz9\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol\":{\"keccak256\":\"0xa7b197139e570e823cab42c3b8500c9c5edc8a40110970a7d6fe60f05864ba10\",\"urls\":[\"bzz-raw://4f469be063d8f694c5277650bc53ac2c0d164f62e36c6a9ab7dad126479990a9\",\"dweb:/ipfs/Qme4sTbGi4T2QhsJSweqGzqm5rxQkypy27g1vLy8ipVijV\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IWETH.sol\":{\"keccak256\":\"0xe85314496167d5a47ea89275d8cdbe53f00927bf933242f67f2acc4126edda0d\",\"urls\":[\"bzz-raw://5b16b1b7602e31c1243f2514bf4bff17d2fc0de0843ad7de6548545d954e4650\",\"dweb:/ipfs/QmcQWaEdqTfkDhHxbFdJX2ytwFtoUGNWCRk1w8DhFhsuf7\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountActionLib.sol\":{\"keccak256\":\"0x5488dd7eae5ce96e479445f19301d9dd44d292a2d6739b9da1fe948eeb41edc4\",\"urls\":[\"bzz-raw://06977e07aea4d893db696173f3ee01a84008770c4e0d81fb5eb82af3a597ceaa\",\"dweb:/ipfs/QmYiH8CsXEbHypJ2gN31LnZv2tfzd2RBuSKoRgx2EbBw26\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountBalanceLib.sol\":{\"keccak256\":\"0x76fd16d615fe7cfceaf775b4e6524fd0462606c802b082498c768a7a4ca01a20\",\"urls\":[\"bzz-raw://56068145e300cde1c77c22e38cb753378abf2f0d4613dcb203e33ff101f169e2\",\"dweb:/ipfs/QmXvMzr9n7vzMHdUPgnc58KX4mrbQAqkq4kDETaj5Y55ZY\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/DepositWithdrawalProxy.sol\":{\"keccak256\":\"0x35df768c10793f5a1fa37d14b5ae5343a2caf3e0f2ef81a32b9f8bb23e3c9fd5\",\"urls\":[\"bzz-raw://4d34a1f817adce9c5b1600dd88d981b84c6de9ef7ef22e747b4aac7956185f0f\",\"dweb:/ipfs/Qmd27T86mccoen4GU3LijveGZayMrxZ3RoVM8VSWXuqc3z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200291d3803806200291d83398101604081905262000034916200007b565b6000805460ff60a01b196001600160a01b039093166001600160a01b03199091161791909116600160a01b179055620000d0565b80516200007581620000b6565b92915050565b6000602082840312156200008e57600080fd5b60006200009c848462000068565b949350505050565b60006001600160a01b03821662000075565b620000c181620000a4565b8114620000cd57600080fd5b50565b61283d80620000e06000396000f3fe60806040526004361061010e5760003560e01c8063735394ac116100a5578063bc6efe3111610074578063cfeb65fe11610059578063cfeb65fe14610315578063d8ddf43114610335578063fe491ee7146103555761010e565b8063bc6efe31146102d5578063c38fd74e146102f55761010e565b8063735394ac146102535780637e54cf0214610275578063807cb86a146102955780639d17b43c146102b55761010e565b80631f410930116100e15780631f4109301461020357806322efe22a1461021657806333282ded146102365780635f669ce21461023e5761010e565b80630a8a2a1114610176578063122373191461019657806315c14a4a146101b6578063197955d7146101e1575b6001546101749073ffffffffffffffffffffffffffffffffffffffff1633147f4465706f7369745769746864726177616c50726f7879000000000000000000007f696e76616c69642050617961626c652073656e64657200000000000000000000610375565b005b34801561018257600080fd5b50610174610191366004611fef565b610411565b3480156101a257600080fd5b506101746101b1366004611fbf565b610579565b3480156101c257600080fd5b506101cb610659565b6040516101d891906125da565b60405180910390f35b3480156101ed57600080fd5b506101f6610675565b6040516101d89190612644565b610174610211366004611f49565b61067b565b34801561022257600080fd5b50610174610231366004611eef565b6107b8565b6101746109c3565b34801561024a57600080fd5b506101cb610aec565b34801561025f57600080fd5b50610268610b08565b6040516101d891906125cc565b34801561028157600080fd5b5061017461029036600461203c565b610b11565b3480156102a157600080fd5b506101746102b0366004611fef565b610ba9565b3480156102c157600080fd5b506101746102d0366004611f85565b610c3d565b3480156102e157600080fd5b506101746102f0366004611fbf565b610d2e565b34801561030157600080fd5b5061017461031036600461207f565b610deb565b34801561032157600080fd5b5061017461033036600461207f565b610ebc565b34801561034157600080fd5b50610174610350366004611fef565b610f53565b34801561036157600080fd5b5061017461037036600461203c565b610fe8565b8261040c576103838261107f565b7f3a200000000000000000000000000000000000000000000000000000000000006103ad8361107f565b6040516020016103bf939291906124b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610403916004016125e8565b60405180910390fd5b505050565b6003546104629060ff167f4465706f7369745769746864726177616c50726f7879000000000000000000007f6e6f7420696e697469616c697a65640000000000000000000000000000000000610375565b60005474010000000000000000000000000000000000000000900460ff1661049c5760405162461bcd60e51b815260040161040390612619565b6000805474ff0000000000000000000000000000000000000000198116825560025460408051608081019091528381526105379373ffffffffffffffffffffffffffffffffffffffff9093169233928892309260208201905b81526020016000198a1461050a57600061050d565b60015b600181111561051857fe5b81526020016000198a1461052c578961052f565b60005b90528761113b565b61053f6112f1565b50506000805474ff000000000000000000000000000000000000000019167401000000000000000000000000000000000000000017905550565b60005474010000000000000000000000000000000000000000900460ff166105b35760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001981168255604080516080810190915260018082526106209373ffffffffffffffffffffffffffffffffffffffff909316923392839288919060208201905b815260200160008152602001889052611436565b50506000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6003546106cc9060ff167f4465706f7369745769746864726177616c50726f7879000000000000000000007f6e6f7420696e697469616c697a65640000000000000000000000000000000000610375565b60005474010000000000000000000000000000000000000000900460ff166107065760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001916905561072c611596565b600080546002546040805160808101909152600181526107809373ffffffffffffffffffffffffffffffffffffffff9093169233923092879260208201905b81526020016000815260200134815250611436565b506000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60035461080a9060ff16157f4465706f7369745769746864726177616c50726f7879000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000610375565b6003805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116919091179091556000546040517f8fae3be1000000000000000000000000000000000000000000000000000000008152911690638fae3be1906108bc90849060040161257e565b60206040518083038186803b1580156108d457600080fd5b505afa1580156108e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061090c9190810190611f67565b6002556001546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169263095ea7b39261096d929116906000199060040161258c565b602060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109bf9190810190611f0d565b5050565b600354610a149060ff167f4465706f7369745769746864726177616c50726f7879000000000000000000007f6e6f7420696e697469616c697a65640000000000000000000000000000000000610375565b60005474010000000000000000000000000000000000000000900460ff16610a4e5760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019169055610a74611596565b60008054600254604080516080810190915260018152610ab59373ffffffffffffffffffffffffffffffffffffffff9093169233923092602081018361076b565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60035460ff1681565b60005474010000000000000000000000000000000000000000900460ff16610b4b5760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001981169091556040805160808101909152600180825261053f9273ffffffffffffffffffffffffffffffffffffffff1691339182918891889190602082019061060c565b60005474010000000000000000000000000000000000000000900460ff16610be35760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001981168255604080516080810190915282815261053f9273ffffffffffffffffffffffffffffffffffffffff9092169133918290889060208101846104f5565b600354610c8e9060ff167f4465706f7369745769746864726177616c50726f7879000000000000000000007f6e6f7420696e697469616c697a65640000000000000000000000000000000000610375565b60005474010000000000000000000000000000000000000000900460ff16610cc85760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019811682556002546040805160808101909152838152610d269373ffffffffffffffffffffffffffffffffffffffff909316923392909130919060208101846104f5565b6106206112f1565b60005474010000000000000000000000000000000000000000900460ff16610d685760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019811682556040805160808101909152600181526106209273ffffffffffffffffffffffffffffffffffffffff909216913391829190879060208101835b8152602001600081526020016000198914610ddb5788610de4565b610de48a61161b565b9052611436565b60005474010000000000000000000000000000000000000000900460ff16610e255760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019811682556040805160808101909152828152610e819273ffffffffffffffffffffffffffffffffffffffff90921691339188918391899160208201906104f5565b50506000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555050565b60005474010000000000000000000000000000000000000000900460ff16610ef65760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019811682556040805160808101909152918252610e819173ffffffffffffffffffffffffffffffffffffffff9091169033908790829088906020810160016104f5565b60005474010000000000000000000000000000000000000000900460ff16610f8d5760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001981168255604080516080810190915282815261053f9273ffffffffffffffffffffffffffffffffffffffff909216913391829088906020810160016104f5565b60005474010000000000000000000000000000000000000000900460ff166110225760405162461bcd60e51b815260040161040390612619565b6000805474ff0000000000000000000000000000000000000000198116825560408051608081019091526001815261053f9273ffffffffffffffffffffffffffffffffffffffff9092169133918291889188916020820190610dc0565b60608082604051602001611093919061249c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561111e578151600019909101908290829081106110e157fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156111195760010181529050611136565b6110c6565b5060408051600080825260208201909252905b509150505b919050565b604080516001808252818301909252606091816020015b61115a611d96565b81526020019060019003908161115257905050905060405180604001604052808873ffffffffffffffffffffffffffffffffffffffff16815260200187815250816000815181106111a757fe5b6020908102919091010152604080516001808252818301909252606091816020015b6111d1611dad565b8152602001906001900390816111c95790505090506111f36000868689611750565b8160008151811061120057fe5b60209081029190910101526040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063a67a6a459061125f90859085906004016125a7565b600060405180830381600087803b15801561127957600080fd5b505af115801561128d573d6000803e3d6000fd5b506000925061129a915050565b8360038111156112a657fe5b14806112bd575060018360038111156112bb57fe5b145b156112e6576112e689836000815181106112d357fe5b60200260200101516000015189886117c6565b505050505050505050565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169060009082906370a082319061134c90309060040161257e565b60206040518083038186803b15801561136457600080fd5b505afa158015611378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061139c9190810190611f67565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff831690632e1a7d4d906113f1908490600401612644565b600060405180830381600087803b15801561140b57600080fd5b505af115801561141f573d6000803e3d6000fd5b506109bf925033915083905063ffffffff61191516565b604080516001808252818301909252606091816020015b611455611d96565b81526020019060019003908161144d57905050905060405180604001604052808773ffffffffffffffffffffffffffffffffffffffff16815260200185815250816000815181106114a257fe5b6020908102919091010152604080516001808252818301909252606091816020015b6114cc611dad565b8152602001906001900390816114c45790505090506114ee60008585896119be565b816000815181106114fb57fe5b60209081029190910101526040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89169063a67a6a459061155a90859085906004016125a7565b600060405180830381600087803b15801561157457600080fd5b505af1158015611588573d6000803e3d6000fd5b505050505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b5050505050565b600080546040517f062bd3e900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063062bd3e990611672908590600401612644565b60206040518083038186803b15801561168a57600080fd5b505afa15801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116c29190810190611ec9565b73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016116fa919061257e565b60206040518083038186803b15801561171257600080fd5b505afa158015611726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061174a9190810190611f67565b92915050565b611758611dad565b6040805161010081019091528060015b8152602001868152602001848152602001858152602001600081526020018373ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001604051806020016040528060008152508152509050949350505050565b6117ce611d96565b60405180604001604052808573ffffffffffffffffffffffffffffffffffffffff168152602001848152509050611803611d96565b6040517f47d1b53c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716906347d1b53c906118579085908790600401612629565b604080518083038186803b15801561186e57600080fd5b505afa158015611882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118a69190810190611f2b565b905061190d6118b4826119da565b806118c357506118c382611a02565b7f4163636f756e7442616c616e63654c69620000000000000000000000000000007f6163636f756e742063616e6e6f7420676f206e65676174697665000000000000888888611a1c565b505050505050565b804710156119355760405162461bcd60e51b815260040161040390612609565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161195b90612573565b60006040518083038185875af1925050503d8060008114611998576040519150601f19603f3d011682016040523d82523d6000602084013e61199d565b606091505b505090508061040c5760405162461bcd60e51b8152600401610403906125f9565b6119c6611dad565b604080516101008101909152806000611768565b8051600090801561174a575050602001516fffffffffffffffffffffffffffffffff16151590565b602001516fffffffffffffffffffffffffffffffff161590565b8561190d57611a2a8561107f565b7f3a20000000000000000000000000000000000000000000000000000000000000611a548661107f565b7f203c000000000000000000000000000000000000000000000000000000000000611a7e87611b0c565b7f2c20000000000000000000000000000000000000000000000000000000000000611aa888611c83565b7f2c20000000000000000000000000000000000000000000000000000000000000611ad289611c83565b6040516103bf999897969594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016124d9565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110611b5857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110611b9957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b60148110156111315760028102611be4600f8516611d74565b838260290381518110611bf357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611c35600f8516611d74565b838260280381518110611c4457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101611bcb565b606081611cc4575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152611136565b8160005b8115611cdc57600101600a82049150611cc8565b6060816040519080825280601f01601f191660200182016040528015611d09576020820181803883390190505b508593509050815b8015611d6b5760001901600a840660300160f81b828281518110611d3157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611d11565b50949350505050565b6000600a821015611d8c57506030810160f81b611136565b5060570160f81b90565b604080518082019091526000808252602082015290565b604080516101008101825260008082526020820152908101611dcd611e0c565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b805161174a816127be565b803561174a816127be565b805161174a816127d2565b803561174a816127db565b600060408284031215611e7357600080fd5b611e7d6040612652565b90506000611e8b8484611e4b565b8252506020611e9c84848301611ea8565b60208301525092915050565b805161174a816127e8565b803561174a816127f1565b805161174a816127f1565b600060208284031215611edb57600080fd5b6000611ee78484611e35565b949350505050565b600060208284031215611f0157600080fd5b6000611ee78484611e40565b600060208284031215611f1f57600080fd5b6000611ee78484611e4b565b600060408284031215611f3d57600080fd5b6000611ee78484611e61565b600060208284031215611f5b57600080fd5b6000611ee78484611eb3565b600060208284031215611f7957600080fd5b6000611ee78484611ebe565b60008060408385031215611f9857600080fd5b6000611fa48585611eb3565b9250506020611fb585828601611e56565b9150509250929050565b60008060408385031215611fd257600080fd5b6000611fde8585611eb3565b9250506020611fb585828601611eb3565b60008060006060848603121561200457600080fd5b60006120108686611eb3565b935050602061202186828701611eb3565b925050604061203286828701611e56565b9150509250925092565b60008060006060848603121561205157600080fd5b600061205d8686611eb3565b935050602061206e86828701611eb3565b925050604061203286828701611eb3565b6000806000806080858703121561209557600080fd5b60006120a18787611eb3565b94505060206120b287828801611eb3565b93505060406120c387828801611eb3565b92505060606120d487828801611e56565b91505092959194509250565b60006120ec8383612378565b9392505050565b60006120ff8383612473565b505060400190565b6121108161272b565b82525050565b6121108161268c565b600061212a8261267f565b6121348185612683565b93508360208202850161214685612679565b8060005b85811015612180578484038952815161216385826120e0565b945061216e83612679565b60209a909a019992505060010161214a565b5091979650505050505050565b60006121988261267f565b6121a28185612683565b93506121ad83612679565b8060005b838110156121db5781516121c588826120f3565b97506121d083612679565b9250506001016121b1565b509495945050505050565b61211081612697565b6121106121fb8261269c565b6126e6565b6121106121fb826126c1565b6121106121fb826126e6565b60006122238261267f565b61222d8185611136565b935061223d818560208601612753565b9290920192915050565b60006122528261267f565b61225c8185612683565b935061226c818560208601612753565b6122758161277f565b9093019392505050565b61211081612732565b6121108161273d565b61211081612748565b60006122a7603a83612683565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b6000612306601d83612683565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b600061174a600083611136565b600061234c601f83612683565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b805160009061016084019061238d8582612288565b5060208301516123a06020860182612493565b5060408301516123b36040860182612423565b5060608301516123c660c0860182612493565b5060808301516123d960e0860182612493565b5060a08301516123ed610100860182612116565b5060c0830151612401610120860182612493565b5060e083015184820361014086015261241a8282612247565b95945050505050565b8051608083019061243484826121e6565b5060208201516124476020850182612291565b50604082015161245a6040850182612291565b50606082015161246d6060850182612493565b50505050565b805160408301906124848482612116565b50602082015161246d60208501825b612110816126e6565b60006124a8828461220c565b50602001919050565b60006124bd8286612218565b91506124c98285612200565b60028201915061241a8284612218565b60006124e5828d612218565b91506124f1828c612200565b600282019150612501828b612218565b915061250d828a612200565b60028201915061251d8289612218565b91506125298288612200565b6002820191506125398287612218565b91506125458286612200565b6002820191506125558285612218565b915061256182846121ef565b506001019a9950505050505050505050565b600061174a82612332565b6020810161174a8284612107565b6040810161259a8285612116565b6120ec6020830184612493565b604080825281016125b8818561218d565b90508181036020830152611ee7818461211f565b6020810161174a82846121e6565b6020810161174a828461227f565b602080825281016120ec8184612247565b6020808252810161174a8161229a565b6020808252810161174a816122f9565b6020808252810161174a8161233f565b606081016126378285612473565b6120ec6040830184612493565b6020810161174a8284612493565b60405181810167ffffffffffffffff8111828210171561267157600080fd5b604052919050565b60200190565b5190565b90815260200190565b600061174a82612712565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80611136816127a7565b80611136816127b4565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b600061174a825b600061174a8261268c565b600061174a826126e9565b600061174a826126f3565b60005b8381101561276e578181015183820152602001612756565b8381111561246d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600981106127b157fe5b50565b600281106127b157fe5b6127c78161268c565b81146127b157600080fd5b6127c781612697565b600481106127b157600080fd5b6127c7816126fd565b6127c7816126e656fea365627a7a723158201b71952cd3ab17e24791d724f77cf223bb30fd0a8b1e78d0810dfc120bec9b7a6c6578706572696d656e74616cf564736f6c63430005100040",
  "deployedBytecode": "0x60806040526004361061010e5760003560e01c8063735394ac116100a5578063bc6efe3111610074578063cfeb65fe11610059578063cfeb65fe14610315578063d8ddf43114610335578063fe491ee7146103555761010e565b8063bc6efe31146102d5578063c38fd74e146102f55761010e565b8063735394ac146102535780637e54cf0214610275578063807cb86a146102955780639d17b43c146102b55761010e565b80631f410930116100e15780631f4109301461020357806322efe22a1461021657806333282ded146102365780635f669ce21461023e5761010e565b80630a8a2a1114610176578063122373191461019657806315c14a4a146101b6578063197955d7146101e1575b6001546101749073ffffffffffffffffffffffffffffffffffffffff1633147f4465706f7369745769746864726177616c50726f7879000000000000000000007f696e76616c69642050617961626c652073656e64657200000000000000000000610375565b005b34801561018257600080fd5b50610174610191366004611fef565b610411565b3480156101a257600080fd5b506101746101b1366004611fbf565b610579565b3480156101c257600080fd5b506101cb610659565b6040516101d891906125da565b60405180910390f35b3480156101ed57600080fd5b506101f6610675565b6040516101d89190612644565b610174610211366004611f49565b61067b565b34801561022257600080fd5b50610174610231366004611eef565b6107b8565b6101746109c3565b34801561024a57600080fd5b506101cb610aec565b34801561025f57600080fd5b50610268610b08565b6040516101d891906125cc565b34801561028157600080fd5b5061017461029036600461203c565b610b11565b3480156102a157600080fd5b506101746102b0366004611fef565b610ba9565b3480156102c157600080fd5b506101746102d0366004611f85565b610c3d565b3480156102e157600080fd5b506101746102f0366004611fbf565b610d2e565b34801561030157600080fd5b5061017461031036600461207f565b610deb565b34801561032157600080fd5b5061017461033036600461207f565b610ebc565b34801561034157600080fd5b50610174610350366004611fef565b610f53565b34801561036157600080fd5b5061017461037036600461203c565b610fe8565b8261040c576103838261107f565b7f3a200000000000000000000000000000000000000000000000000000000000006103ad8361107f565b6040516020016103bf939291906124b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b8252610403916004016125e8565b60405180910390fd5b505050565b6003546104629060ff167f4465706f7369745769746864726177616c50726f7879000000000000000000007f6e6f7420696e697469616c697a65640000000000000000000000000000000000610375565b60005474010000000000000000000000000000000000000000900460ff1661049c5760405162461bcd60e51b815260040161040390612619565b6000805474ff0000000000000000000000000000000000000000198116825560025460408051608081019091528381526105379373ffffffffffffffffffffffffffffffffffffffff9093169233928892309260208201905b81526020016000198a1461050a57600061050d565b60015b600181111561051857fe5b81526020016000198a1461052c578961052f565b60005b90528761113b565b61053f6112f1565b50506000805474ff000000000000000000000000000000000000000019167401000000000000000000000000000000000000000017905550565b60005474010000000000000000000000000000000000000000900460ff166105b35760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001981168255604080516080810190915260018082526106209373ffffffffffffffffffffffffffffffffffffffff909316923392839288919060208201905b815260200160008152602001889052611436565b50506000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6003546106cc9060ff167f4465706f7369745769746864726177616c50726f7879000000000000000000007f6e6f7420696e697469616c697a65640000000000000000000000000000000000610375565b60005474010000000000000000000000000000000000000000900460ff166107065760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001916905561072c611596565b600080546002546040805160808101909152600181526107809373ffffffffffffffffffffffffffffffffffffffff9093169233923092879260208201905b81526020016000815260200134815250611436565b506000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60035461080a9060ff16157f4465706f7369745769746864726177616c50726f7879000000000000000000007f616c726561647920696e697469616c697a656400000000000000000000000000610375565b6003805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116919091179091556000546040517f8fae3be1000000000000000000000000000000000000000000000000000000008152911690638fae3be1906108bc90849060040161257e565b60206040518083038186803b1580156108d457600080fd5b505afa1580156108e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061090c9190810190611f67565b6002556001546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169263095ea7b39261096d929116906000199060040161258c565b602060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109bf9190810190611f0d565b5050565b600354610a149060ff167f4465706f7369745769746864726177616c50726f7879000000000000000000007f6e6f7420696e697469616c697a65640000000000000000000000000000000000610375565b60005474010000000000000000000000000000000000000000900460ff16610a4e5760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019169055610a74611596565b60008054600254604080516080810190915260018152610ab59373ffffffffffffffffffffffffffffffffffffffff9093169233923092602081018361076b565b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60035460ff1681565b60005474010000000000000000000000000000000000000000900460ff16610b4b5760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001981169091556040805160808101909152600180825261053f9273ffffffffffffffffffffffffffffffffffffffff1691339182918891889190602082019061060c565b60005474010000000000000000000000000000000000000000900460ff16610be35760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001981168255604080516080810190915282815261053f9273ffffffffffffffffffffffffffffffffffffffff9092169133918290889060208101846104f5565b600354610c8e9060ff167f4465706f7369745769746864726177616c50726f7879000000000000000000007f6e6f7420696e697469616c697a65640000000000000000000000000000000000610375565b60005474010000000000000000000000000000000000000000900460ff16610cc85760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019811682556002546040805160808101909152838152610d269373ffffffffffffffffffffffffffffffffffffffff909316923392909130919060208101846104f5565b6106206112f1565b60005474010000000000000000000000000000000000000000900460ff16610d685760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019811682556040805160808101909152600181526106209273ffffffffffffffffffffffffffffffffffffffff909216913391829190879060208101835b8152602001600081526020016000198914610ddb5788610de4565b610de48a61161b565b9052611436565b60005474010000000000000000000000000000000000000000900460ff16610e255760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019811682556040805160808101909152828152610e819273ffffffffffffffffffffffffffffffffffffffff90921691339188918391899160208201906104f5565b50506000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555050565b60005474010000000000000000000000000000000000000000900460ff16610ef65760405162461bcd60e51b815260040161040390612619565b6000805474ff000000000000000000000000000000000000000019811682556040805160808101909152918252610e819173ffffffffffffffffffffffffffffffffffffffff9091169033908790829088906020810160016104f5565b60005474010000000000000000000000000000000000000000900460ff16610f8d5760405162461bcd60e51b815260040161040390612619565b6000805474ff00000000000000000000000000000000000000001981168255604080516080810190915282815261053f9273ffffffffffffffffffffffffffffffffffffffff909216913391829088906020810160016104f5565b60005474010000000000000000000000000000000000000000900460ff166110225760405162461bcd60e51b815260040161040390612619565b6000805474ff0000000000000000000000000000000000000000198116825560408051608081019091526001815261053f9273ffffffffffffffffffffffffffffffffffffffff9092169133918291889188916020820190610dc0565b60608082604051602001611093919061249c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561111e578151600019909101908290829081106110e157fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156111195760010181529050611136565b6110c6565b5060408051600080825260208201909252905b509150505b919050565b604080516001808252818301909252606091816020015b61115a611d96565b81526020019060019003908161115257905050905060405180604001604052808873ffffffffffffffffffffffffffffffffffffffff16815260200187815250816000815181106111a757fe5b6020908102919091010152604080516001808252818301909252606091816020015b6111d1611dad565b8152602001906001900390816111c95790505090506111f36000868689611750565b8160008151811061120057fe5b60209081029190910101526040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063a67a6a459061125f90859085906004016125a7565b600060405180830381600087803b15801561127957600080fd5b505af115801561128d573d6000803e3d6000fd5b506000925061129a915050565b8360038111156112a657fe5b14806112bd575060018360038111156112bb57fe5b145b156112e6576112e689836000815181106112d357fe5b60200260200101516000015189886117c6565b505050505050505050565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169060009082906370a082319061134c90309060040161257e565b60206040518083038186803b15801561136457600080fd5b505afa158015611378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061139c9190810190611f67565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff831690632e1a7d4d906113f1908490600401612644565b600060405180830381600087803b15801561140b57600080fd5b505af115801561141f573d6000803e3d6000fd5b506109bf925033915083905063ffffffff61191516565b604080516001808252818301909252606091816020015b611455611d96565b81526020019060019003908161144d57905050905060405180604001604052808773ffffffffffffffffffffffffffffffffffffffff16815260200185815250816000815181106114a257fe5b6020908102919091010152604080516001808252818301909252606091816020015b6114cc611dad565b8152602001906001900390816114c45790505090506114ee60008585896119be565b816000815181106114fb57fe5b60209081029190910101526040517fa67a6a4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89169063a67a6a459061155a90859085906004016125a7565b600060405180830381600087803b15801561157457600080fd5b505af1158015611588573d6000803e3d6000fd5b505050505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b5050505050565b600080546040517f062bd3e900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063062bd3e990611672908590600401612644565b60206040518083038186803b15801561168a57600080fd5b505afa15801561169e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116c29190810190611ec9565b73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016116fa919061257e565b60206040518083038186803b15801561171257600080fd5b505afa158015611726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061174a9190810190611f67565b92915050565b611758611dad565b6040805161010081019091528060015b8152602001868152602001848152602001858152602001600081526020018373ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001604051806020016040528060008152508152509050949350505050565b6117ce611d96565b60405180604001604052808573ffffffffffffffffffffffffffffffffffffffff168152602001848152509050611803611d96565b6040517f47d1b53c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716906347d1b53c906118579085908790600401612629565b604080518083038186803b15801561186e57600080fd5b505afa158015611882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118a69190810190611f2b565b905061190d6118b4826119da565b806118c357506118c382611a02565b7f4163636f756e7442616c616e63654c69620000000000000000000000000000007f6163636f756e742063616e6e6f7420676f206e65676174697665000000000000888888611a1c565b505050505050565b804710156119355760405162461bcd60e51b815260040161040390612609565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161195b90612573565b60006040518083038185875af1925050503d8060008114611998576040519150601f19603f3d011682016040523d82523d6000602084013e61199d565b606091505b505090508061040c5760405162461bcd60e51b8152600401610403906125f9565b6119c6611dad565b604080516101008101909152806000611768565b8051600090801561174a575050602001516fffffffffffffffffffffffffffffffff16151590565b602001516fffffffffffffffffffffffffffffffff161590565b8561190d57611a2a8561107f565b7f3a20000000000000000000000000000000000000000000000000000000000000611a548661107f565b7f203c000000000000000000000000000000000000000000000000000000000000611a7e87611b0c565b7f2c20000000000000000000000000000000000000000000000000000000000000611aa888611c83565b7f2c20000000000000000000000000000000000000000000000000000000000000611ad289611c83565b6040516103bf999897969594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016124d9565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b81600081518110611b5857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b81600181518110611b9957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b60148110156111315760028102611be4600f8516611d74565b838260290381518110611bf357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350611c35600f8516611d74565b838260280381518110611c4457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101611bcb565b606081611cc4575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152611136565b8160005b8115611cdc57600101600a82049150611cc8565b6060816040519080825280601f01601f191660200182016040528015611d09576020820181803883390190505b508593509050815b8015611d6b5760001901600a840660300160f81b828281518110611d3157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350611d11565b50949350505050565b6000600a821015611d8c57506030810160f81b611136565b5060570160f81b90565b604080518082019091526000808252602082015290565b604080516101008101825260008082526020820152908101611dcd611e0c565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b805161174a816127be565b803561174a816127be565b805161174a816127d2565b803561174a816127db565b600060408284031215611e7357600080fd5b611e7d6040612652565b90506000611e8b8484611e4b565b8252506020611e9c84848301611ea8565b60208301525092915050565b805161174a816127e8565b803561174a816127f1565b805161174a816127f1565b600060208284031215611edb57600080fd5b6000611ee78484611e35565b949350505050565b600060208284031215611f0157600080fd5b6000611ee78484611e40565b600060208284031215611f1f57600080fd5b6000611ee78484611e4b565b600060408284031215611f3d57600080fd5b6000611ee78484611e61565b600060208284031215611f5b57600080fd5b6000611ee78484611eb3565b600060208284031215611f7957600080fd5b6000611ee78484611ebe565b60008060408385031215611f9857600080fd5b6000611fa48585611eb3565b9250506020611fb585828601611e56565b9150509250929050565b60008060408385031215611fd257600080fd5b6000611fde8585611eb3565b9250506020611fb585828601611eb3565b60008060006060848603121561200457600080fd5b60006120108686611eb3565b935050602061202186828701611eb3565b925050604061203286828701611e56565b9150509250925092565b60008060006060848603121561205157600080fd5b600061205d8686611eb3565b935050602061206e86828701611eb3565b925050604061203286828701611eb3565b6000806000806080858703121561209557600080fd5b60006120a18787611eb3565b94505060206120b287828801611eb3565b93505060406120c387828801611eb3565b92505060606120d487828801611e56565b91505092959194509250565b60006120ec8383612378565b9392505050565b60006120ff8383612473565b505060400190565b6121108161272b565b82525050565b6121108161268c565b600061212a8261267f565b6121348185612683565b93508360208202850161214685612679565b8060005b85811015612180578484038952815161216385826120e0565b945061216e83612679565b60209a909a019992505060010161214a565b5091979650505050505050565b60006121988261267f565b6121a28185612683565b93506121ad83612679565b8060005b838110156121db5781516121c588826120f3565b97506121d083612679565b9250506001016121b1565b509495945050505050565b61211081612697565b6121106121fb8261269c565b6126e6565b6121106121fb826126c1565b6121106121fb826126e6565b60006122238261267f565b61222d8185611136565b935061223d818560208601612753565b9290920192915050565b60006122528261267f565b61225c8185612683565b935061226c818560208601612753565b6122758161277f565b9093019392505050565b61211081612732565b6121108161273d565b61211081612748565b60006122a7603a83612683565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b6000612306601d83612683565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b600061174a600083611136565b600061234c601f83612683565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b805160009061016084019061238d8582612288565b5060208301516123a06020860182612493565b5060408301516123b36040860182612423565b5060608301516123c660c0860182612493565b5060808301516123d960e0860182612493565b5060a08301516123ed610100860182612116565b5060c0830151612401610120860182612493565b5060e083015184820361014086015261241a8282612247565b95945050505050565b8051608083019061243484826121e6565b5060208201516124476020850182612291565b50604082015161245a6040850182612291565b50606082015161246d6060850182612493565b50505050565b805160408301906124848482612116565b50602082015161246d60208501825b612110816126e6565b60006124a8828461220c565b50602001919050565b60006124bd8286612218565b91506124c98285612200565b60028201915061241a8284612218565b60006124e5828d612218565b91506124f1828c612200565b600282019150612501828b612218565b915061250d828a612200565b60028201915061251d8289612218565b91506125298288612200565b6002820191506125398287612218565b91506125458286612200565b6002820191506125558285612218565b915061256182846121ef565b506001019a9950505050505050505050565b600061174a82612332565b6020810161174a8284612107565b6040810161259a8285612116565b6120ec6020830184612493565b604080825281016125b8818561218d565b90508181036020830152611ee7818461211f565b6020810161174a82846121e6565b6020810161174a828461227f565b602080825281016120ec8184612247565b6020808252810161174a8161229a565b6020808252810161174a816122f9565b6020808252810161174a8161233f565b606081016126378285612473565b6120ec6040830184612493565b6020810161174a8284612493565b60405181810167ffffffffffffffff8111828210171561267157600080fd5b604052919050565b60200190565b5190565b90815260200190565b600061174a82612712565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b80611136816127a7565b80611136816127b4565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b600061174a825b600061174a8261268c565b600061174a826126e9565b600061174a826126f3565b60005b8381101561276e578181015183820152602001612756565b8381111561246d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600981106127b157fe5b50565b600281106127b157fe5b6127c78161268c565b81146127b157600080fd5b6127c781612697565b600481106127b157600080fd5b6127c7816126fd565b6127c7816126e656fea365627a7a723158201b71952cd3ab17e24791d724f77cf223bb30fd0a8b1e78d0810dfc120bec9b7a6c6578706572696d656e74616cf564736f6c63430005100040",
  "sourceMap": "1733:11566:48:-;;;2396:109;8:9:-1;5:2;;;30:1;27;20:12;5:2;2396:109:48;;;;;;;;;;;;;;;;;;;;;1302:15:6;:50;;-1:-1:-1;;;;;;;;;1302:50:6;;;-1:-1:-1;;;;;;1302:50:6;;;;1421:18:156;;;;-1:-1:-1;;;1421:18:156;;;1733:11566:48;;5:134:-1;83:13;;101:33;83:13;101:33;;;68:71;;;;;146:263;;261:2;249:9;240:7;236:23;232:32;229:2;;;277:1;274;267:12;229:2;312:1;329:64;385:7;365:9;329:64;;;319:74;223:186;-1:-1;;;;223:186;416:91;;-1:-1;;;;;576:54;;478:24;559:76;642:117;711:24;729:5;711:24;;;704:5;701:35;691:2;;750:1;747;740:12;691:2;685:74;;;1733:11566:48;;;;;;",
  "deployedSourceMap": "1733:11566:48:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:21;;2602:136;;2650:21;;2628:10;:44;2686:4;2602:136;:12;:136::i;:::-;1733:11566;6898:878;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6898:878:48;;;;;;;;:::i;10302:686::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10302:686:48;;;;;;;;:::i;1130:38:6:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1130:38:6;;;:::i;:::-;;;;;;;;;;;;;;;;2072:32:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2072:32:48;;;:::i;:::-;;;;;;;;3928:670;;;;;;;;;:::i;2751:452::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2751:452:48;;;;;;;;:::i;5352:695::-;;;:::i;2032:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2032:34:48;;;:::i;2110:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2110:25:48;;;:::i;:::-;;;;;;;;9639:657;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9639:657:48;;;;;;;;:::i;7782:866::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7782:866:48;;;;;;;;:::i;8654:905::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8654:905:48;;;;;;;;:::i;4604:742::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4604:742:48;;;;;;;;:::i;6053:839::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6053:839:48;;;;;;;;:::i;10994:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10994:839:48;;;;;;;;:::i;11839:866::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11839:866:48;;;;;;;;:::i;3209:713::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3209:713:48;;;;;;;;:::i;1294:426:99:-;1428:4;1423:291;;1542:24;1561:4;1542:18;:24::i;:::-;1592:5;1623:26;1642:6;1623:18;:26::i;:::-;1500:171;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;1500:171:99;;;;-1:-1:-1;;;1448:255:99;;;;;;;;;;;;;;;;1423:291;1294:426;;;:::o;6898:878:48:-;2254:13;;2228:98;;2254:13;;2281:4;2228:98;:12;:98::i;:::-;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;7382:17:48;;7413:289;;;;;;;;;;;;7120:623;;7159:15;;;;;7210:10;;7269:18;;7328:4;;7413:289;;;;;;;;;-1:-1:-1;;7542:10:48;:22;:81;;7597:26;7542:81;;;7567:27;7542:81;7413:289;;;;;;;;;;;;-1:-1:-1;;7648:10:48;:22;:39;;7677:10;7648:39;;;7673:1;7648:39;7413:289;;7716:17;7120:25;:623::i;:::-;7753:16;:14;:16::i;:::-;-1:-1:-1;;2230:11:156;:18;;-1:-1:-1;;2230:18:156;;;;;-1:-1:-1;6898:878:48:o;10302:686::-;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;10767:204:48;;;;;;;;;2056:19:156;10767:204:48;;;10441:540;;10479:15;;;;;10530:10;;;;10744:9;;10767:204;;;;;;;;;;10895:26;10767:204;;;;;;;10441:24;:540::i;:::-;-1:-1:-1;;2230:11:156;:18;;-1:-1:-1;;2230:18:156;;;;;10302:686:48:o;1130:38:6:-;;;;;;:::o;2072:32:48:-;;;;:::o;3928:670::-;2254:13;;2228:98;;2254:13;;2281:4;2228:98;:12;:98::i;:::-;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;4069:7:48;:5;:7::i;:::-;4124:15;;;4347:17;;4378:203;;;;;;;;;4124:15;4378:203;;4086:505;;4124:15;;;;;4175:10;;4263:4;;4317:16;;4378:203;;;;;;;;;4506:26;4378:203;;;;4557:9;4378:203;;;4086:24;:505::i;:::-;-1:-1:-1;2230:11:156;:18;;-1:-1:-1;;2230:18:156;;;;;3928:670:48:o;2751:452::-;2875:13;;2848:103;;2875:13;;2874:14;2902:4;2848:103;:12;:103::i;:::-;2961:13;:20;;2977:4;2961:20;;;;;;;;;2991:44;;;;;;;;;;;;;;;-1:-1:-1;3065:15:48;:56;;;;;:15;;;:41;;:56;;2991:44;;3065:56;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3065:56:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3065:56:48;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3065:56:48;;;;;;;;;3045:17;:76;3131:21;;;3169:15;3131:65;;;;;:21;;;;;:29;;:65;;3169:15;;;-1:-1:-1;;3192:2:48;3131:65;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3131:65:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3131:65:48;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3131:65:48;;;;;;;;;;2751:452;:::o;5352:695::-;2254:13;;2228:98;;2254:13;;2281:4;2228:98;:12;:98::i;:::-;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;5473:7:48;:5;:7::i;:::-;5528:15;;;5796:17;;5827:203;;;;;;;;;5528:15;5827:203;;5490:550;;5528:15;;;;;5579:10;;5667:4;;5827:203;;;5528:15;5827:203;;5490:550;2230:11:156;:18;;-1:-1:-1;;2230:18:156;;;;;5352:695:48:o;2032:34::-;;;;;;:::o;2110:25::-;;;;;;:::o;9639:657::-;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;;10075:204:48;;;;;;;;;2056:19:156;10075:204:48;;;9794:495;;9832:15;;;9883:10;;;;10022:16;;10052:9;;10075:204;;;;;;;7782:866;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;8311:289:48;;;;;;;;;;;;7984:657;;8023:15;;;;;8074:10;;;;8288:9;;8311:289;;;2070:5:156;8311:289:48;;8654:905;2254:13;;2228:98;;2254:13;;2281:4;2228:98;:12;:98::i;:::-;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;9165:17:48;;9196:289;;;;;;;;;;;;8858:668;;8897:15;;;;;8948:10;;2070:5:156;;9111:4:48;;9165:17;9196:289;;;2070:5:156;9196:289:48;;8858:668;9536:16;:14;:16::i;4604:742::-;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;5069:260:48;;;;;;;;;2056:19:156;5069:260:48;;4743:596;;4781:15;;;;;4832:10;;;;2070:5:156;5046:9:48;;5069:260;;;2070:5:156;5069:260:48;;;;;5197:26;5069:260;;;;-1:-1:-1;;5248:10:48;:22;:66;;5304:10;5248:66;;;5273:28;5291:9;5273:17;:28::i;:::-;5069:260;;4743:24;:596::i;6053:839::-;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;6555:289:48;;;;;;;;;;;;6273:612;;6312:15;;;;;6363:10;;6422:18;;6363:10;;6532:9;;6555:289;;;;;;6273:612;-1:-1:-1;;2230:11:156;:18;;-1:-1:-1;;2230:18:156;;;;;-1:-1:-1;;6053:839:48:o;10994:::-;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;11496:289:48;;;;;;;;;;;;11214:612;;11253:15;;;;;11304:10;;11363:18;;11304:10;;11473:9;;11496:289;;;2056:19:156;11496:289:48;;11839:866;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;12368:289:48;;;;;;;;;;;;12041:657;;12080:15;;;;;12131:10;;;;12345:9;;12368:289;;;2056:19:156;12368:289:48;;3209:713;1934:11:156;;;;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2070:5;2056:19;;-1:-1:-1;;2056:19:156;;;;3645:260:48;;;;;;;;;2056:19:156;3645:260:48;;3364:551;;3402:15;;;;;3453:10;;;;3592:16;;3622:9;;3645:260;;;;;;6359:968:99;6463:12;6538:19;6577:5;6560:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6560:23:99;;;;-1:-1:-1;49:4;6689:572:99;6710:6;;6689:572;;6962:9;;-1:-1:-1;;6864:3:99;;;;6962:6;;6864:3;;6962:9;;;;;;;;;;;;:14;6958:293;;7017:1;7013:5;7143:22;;7150:6;-1:-1:-1;7223:13:99;;6958:293;6689:572;;;-1:-1:-1;7308:12:99;;;7318:1;7308:12;;;;;;;;;;;;7301:19;;;6359:968;;;;:::o;2415:1202:34:-;2758:21;;;2777:1;2758:21;;;;;;;;;2725:30;;2758:21;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2725:54;;2803:98;;;;;;;;2837:13;2803:98;;;;;;2872:18;2803:98;;;2789:8;2798:1;2789:11;;;;;;;;;;;;;;;;;:112;2950:27;;;2975:1;2950:27;;;;;;;;;2912:35;;2950:27;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2912:65;;3000:169;3055:1;3105:9;3128:7;3149:10;3000:22;:169::i;:::-;2987:7;2995:1;2987:10;;;;;;;;;;;;;;;;;:182;3180:42;;;;;:23;;;;;;:42;;3204:8;;3214:7;;3180:42;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3180:42:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;3271:39:34;;-1:-1:-1;3250:60:34;;-1:-1:-1;;3250:60:34;;:17;:60;;;;;;;;;:136;;;-1:-1:-1;3347:39:34;3326:17;:60;;;;;;;;;3250:136;3233:378;;;3411:189;3473:15;3506:8;3515:1;3506:11;;;;;;;;;;;;;;:17;;;3541:18;3577:9;3411:44;:189::i;:::-;2415:1202;;;;;;;;;:::o;12861:253:48:-;12934:21;;12979:44;;;;;12934:21;;;;;12906:25;;12934:21;;12979:29;;:44;;13017:4;;12979:44;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12979:44:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12979:44:48;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12979:44:48;;;;;;;;;13033:36;;;;;12965:58;;-1:-1:-1;13033:28:48;;;;;;:36;;12965:58;;13033:36;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13033:36:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;13079:28:48;;-1:-1:-1;13079:10:48;;-1:-1:-1;13100:6:48;;-1:-1:-1;13079:28:48;:20;:28;:::i;1579:748:34:-;1859:21;;;1878:1;1859:21;;;;;;;;;1826:30;;1859:21;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1826:54;;1904:96;;;;;;;;1938:13;1904:96;;;;;;1973:16;1904:96;;;1890:8;1899:1;1890:11;;;;;;;;;;;;;;;;;:110;2049:27;;;2074:1;2049:27;;;;;;;;;2011:35;;2049:27;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2011:65;;2099:168;2151:1;2201:9;2224:7;2245:12;2099:19;:168::i;:::-;2086:7;2094:1;2086:10;;;;;;;;;;;;;;;;;:181;2278:42;;;;;:23;;;;;;:42;;2302:8;;2312:7;;2278:42;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2278:42:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2278:42:34;;;;1579:748;;;;;;;;:::o;12764:91:48:-;12800:21;;;;;;;;;;;:29;;;12836:9;12800:48;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12800:48:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12800:48:48;;;;;12764:91::o;13120:177::-;13189:4;13219:15;;:48;;;;;:15;;;;;:37;;:48;;13257:9;;13219:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13219:48:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13219:48:48;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13219:48:48;;;;;;;;;13212:66;;;13279:10;13212:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13212:78:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13212:78:48;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13212:78:48;;;;;;;;;13205:85;13120:177;-1:-1:-1;;13120:177:48:o;14541:556:34:-;14727:25;;:::i;:::-;14771:319;;;;;;;;;;14816:27;14771:319;;;;;14868:10;14771:319;;;;14900:7;14771:319;;;;14938:9;14771:319;;;;14980:1;14771:319;;;;15009:10;14771:319;;;;;;15049:1;14771:319;;;;15070:9;;;;;;;;;;;;14771:319;;;14764:326;;14541:556;;;;;;:::o;1578:549:35:-;1766:27;;:::i;:::-;1796:35;;;;;;;;1809:6;1796:35;;;;;;1817:13;1796:35;;;1766:65;;1841:20;;:::i;:::-;1864:48;;;;;:28;;;;;;:48;;1893:7;;1902:9;;1864:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:48:35;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1864:48:35;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1864:48:35;;;;;;;;;1841:71;;1922:198;1948:16;:3;:14;:16::i;:::-;:32;;;;1968:12;:3;:10;:12::i;:::-;1994:4;1922:198;2054:6;2074:13;2101:9;1922:12;:198::i;:::-;1578:549;;;;;;:::o;2587:365:154:-;2701:6;2676:21;:31;;2668:73;;;;-1:-1:-1;;;2668:73:154;;;;;;;;;2807:12;2825:9;:14;;2846:6;2825:32;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2806:51:154;;;2875:7;2867:78;;;;-1:-1:-1;;;2867:78:154;;;;;;;;6380:556:34;6565:25;;:::i;:::-;6609:320;;;;;;;;;;-1:-1:-1;6609:320:34;;3609:151:104;3731:6;;3704:4;;3731:22;;;;-1:-1:-1;;3741:7:104;;;:12;;;;;3609:151::o;3766:137::-;3884:7;;;:12;;;;3766:137::o;4198:765:99:-;4410:4;4405:552;;4524:24;4543:4;4524:18;:24::i;:::-;4574:5;4605:26;4624:6;4605:18;:26::i;:::-;4657:6;4689:19;4699:8;4689:9;:19::i;:::-;4734:5;4765:19;4775:8;4765:9;:19::i;:::-;4810:5;4841:19;4851:8;4841:9;:19::i;:::-;4482:432;;;;;;;;;;;;;4886:6;;4482:432;;;;8252:958;8524:13;;;8534:2;8524:13;;;8346:12;8524:13;;;;;;8386:14;;;;8346:12;;8524:13;;;21:6:-1;;104:10;8524:13:99;87:34:-1;135:17;;-1:-1;8524:13:99;8502:35;;902:2;8601:23;;8589:6;8596:1;8589:9;;;;;;;;;;;:35;;;;;;;;;;;1010:3;8646:27;;8634:6;8641:1;8634:9;;;;;;;;;;;:39;;;;;;;;;;;8787:9;8782:398;8802:2;8798:1;:6;8782:398;;;8891:1;8887:5;;8984:23;1232:3;8989:17;;8984:4;:23::i;:::-;8963:6;8975:5;8970:2;:10;8963:18;;;;;;;;;;;:44;;;;;;;;;;;9030:1;9025;:6;;9021:10;;9122:23;1232:3;9127:1;:17;9122:4;:23::i;:::-;9101:6;9113:5;9108:2;:10;9101:18;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;;9168:1:99;9163:6;;;;;8806:3;;8782:398;;7333:913;7427:12;7459:10;7455:51;;-1:-1:-1;7485:10:99;;;;;;;;;;;;;;;;;;;7455:51;7567:5;7555:9;7606:69;7613:6;;7606:69;;7635:8;;7662:2;7657:7;;;;7606:69;;;7716:17;7746:6;7736:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;7736:17:99;87:34:-1;135:17;;-1:-1;7736:17:99;-1:-1:-1;7845:5:99;;-1:-1:-1;7716:37:99;-1:-1:-1;7877:6:99;7860:358;7885:6;;7860:358;;-1:-1:-1;;8039:3:99;8135:2;8131:1;:6;902:2;8117:21;8106:34;;8096:4;8101:1;8096:7;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;8205:2:99;8200:7;;;;7860:358;;;-1:-1:-1;8235:4:99;7333:913;-1:-1:-1;;;;7333:913:99:o;10178:325::-;10267:4;10335:2;10327:5;:10;10323:79;;;-1:-1:-1;902:2:99;10371:18;;10360:31;;10353:38;;10323:79;-1:-1:-1;956:2:99;10467:27;10456:40;;;10178:325::o;1733:11566:48:-;;;;;;;;;;-1:-1:-1;1733:11566:48;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1733:11566:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;1733:11566:48;;;;;;;;;;;;;;;;;;;;;:::o;5:134:-1:-;83:13;;101:33;83:13;101:33;;146:146;221:20;;246:41;221:20;246:41;;299:128;374:13;;392:30;374:13;392:30;;434:172;522:20;;547:54;522:20;547:54;;636:495;;758:4;746:9;741:3;737:19;733:30;730:2;;;776:1;773;766:12;730:2;794:20;809:4;794:20;;;785:29;-1:-1;864:1;896:57;949:3;929:9;896:57;;;871:83;;-1:-1;1016:2;1049:60;1105:3;1081:22;;;1049:60;;;1042:4;1035:5;1031:16;1024:86;975:146;724:407;;;;;1138:134;1216:13;;1234:33;1216:13;1234:33;;1279:130;1346:20;;1371:33;1346:20;1371:33;;1416:134;1494:13;;1512:33;1494:13;1512:33;;1557:263;;1672:2;1660:9;1651:7;1647:23;1643:32;1640:2;;;1688:1;1685;1678:12;1640:2;1723:1;1740:64;1796:7;1776:9;1740:64;;;1730:74;1634:186;-1:-1;;;;1634:186;1827:257;;1939:2;1927:9;1918:7;1914:23;1910:32;1907:2;;;1955:1;1952;1945:12;1907:2;1990:1;2007:61;2060:7;2040:9;2007:61;;2091:257;;2203:2;2191:9;2182:7;2178:23;2174:32;2171:2;;;2219:1;2216;2209:12;2171:2;2254:1;2271:61;2324:7;2304:9;2271:61;;2355:307;;2492:2;2480:9;2471:7;2467:23;2463:32;2460:2;;;2508:1;2505;2498:12;2460:2;2543:1;2560:86;2638:7;2618:9;2560:86;;2669:241;;2773:2;2761:9;2752:7;2748:23;2744:32;2741:2;;;2789:1;2786;2779:12;2741:2;2824:1;2841:53;2886:7;2866:9;2841:53;;2917:263;;3032:2;3020:9;3011:7;3007:23;3003:32;3000:2;;;3048:1;3045;3038:12;3000:2;3083:1;3100:64;3156:7;3136:9;3100:64;;3187:408;;;3329:2;3317:9;3308:7;3304:23;3300:32;3297:2;;;3345:1;3342;3335:12;3297:2;3380:1;3397:53;3442:7;3422:9;3397:53;;;3387:63;;3359:97;3487:2;3505:74;3571:7;3562:6;3551:9;3547:22;3505:74;;;3495:84;;3466:119;3291:304;;;;;;3602:366;;;3723:2;3711:9;3702:7;3698:23;3694:32;3691:2;;;3739:1;3736;3729:12;3691:2;3774:1;3791:53;3836:7;3816:9;3791:53;;;3781:63;;3753:97;3881:2;3899:53;3944:7;3935:6;3924:9;3920:22;3899:53;;3975:533;;;;4134:2;4122:9;4113:7;4109:23;4105:32;4102:2;;;4150:1;4147;4140:12;4102:2;4185:1;4202:53;4247:7;4227:9;4202:53;;;4192:63;;4164:97;4292:2;4310:53;4355:7;4346:6;4335:9;4331:22;4310:53;;;4300:63;;4271:98;4400:2;4418:74;4484:7;4475:6;4464:9;4460:22;4418:74;;;4408:84;;4379:119;4096:412;;;;;;4515:491;;;;4653:2;4641:9;4632:7;4628:23;4624:32;4621:2;;;4669:1;4666;4659:12;4621:2;4704:1;4721:53;4766:7;4746:9;4721:53;;;4711:63;;4683:97;4811:2;4829:53;4874:7;4865:6;4854:9;4850:22;4829:53;;;4819:63;;4790:98;4919:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;;5013:659;;;;;5189:3;5177:9;5168:7;5164:23;5160:33;5157:2;;;5206:1;5203;5196:12;5157:2;5241:1;5258:53;5303:7;5283:9;5258:53;;;5248:63;;5220:97;5348:2;5366:53;5411:7;5402:6;5391:9;5387:22;5366:53;;;5356:63;;5327:98;5456:2;5474:53;5519:7;5510:6;5499:9;5495:22;5474:53;;;5464:63;;5435:98;5564:2;5582:74;5648:7;5639:6;5628:9;5624:22;5582:74;;;5572:84;;5543:119;5151:521;;;;;;;;5680:257;;5831:100;5927:3;5919:6;5831:100;;;5817:114;5810:127;-1:-1;;;5810:127;5946:253;;6071:88;6155:3;6147:6;6071:88;;;-1:-1;;6188:4;6179:14;;6064:135;6207:142;6298:45;6337:5;6298:45;;;6293:3;6286:58;6280:69;;;6356:103;6429:24;6447:5;6429:24;;6653:1048;;6848:79;6921:5;6848:79;;;6940:111;7044:6;7039:3;6940:111;;;6933:118;;7074:3;7116:4;7108:6;7104:17;7099:3;7095:27;7143:81;7218:5;7143:81;;;7244:7;7272:1;7257:405;7282:6;7279:1;7276:13;7257:405;;;7344:9;7338:4;7334:20;7329:3;7322:33;7389:6;7383:13;7411:114;7520:4;7505:13;7411:114;;;7403:122;;7542:85;7620:6;7542:85;;;7650:4;7641:14;;;;;7532:95;-1:-1;;7304:1;7297:9;7257:405;;;-1:-1;7675:4;;6827:874;-1:-1;;;;;;;6827:874;7764:842;;7947:73;8014:5;7947:73;;;8033:105;8131:6;8126:3;8033:105;;;8026:112;;8159:75;8228:5;8159:75;;;8254:7;8282:1;8267:317;8292:6;8289:1;8286:13;8267:317;;;8359:6;8353:13;8380:101;8477:3;8462:13;8380:101;;;8373:108;;8498:79;8570:6;8498:79;;;8488:89;-1:-1;;8314:1;8307:9;8267:317;;;-1:-1;8597:3;;7926:680;-1:-1;;;;;7926:680;8614:94;8681:21;8696:5;8681:21;;8826:148;8925:43;8944:23;8961:5;8944:23;;;8925:43;;8981:148;9080:43;9099:23;9116:5;9099:23;;9136:152;9237:45;9257:24;9275:5;9257:24;;9295:356;;9423:38;9455:5;9423:38;;;9473:88;9554:6;9549:3;9473:88;;;9466:95;;9566:52;9611:6;9606:3;9599:4;9592:5;9588:16;9566:52;;;9630:16;;;;;9403:248;-1:-1;;9403:248;9658:315;;9754:34;9782:5;9754:34;;;9800:60;9853:6;9848:3;9800:60;;;9793:67;;9865:52;9910:6;9905:3;9898:4;9891:5;9887:16;9865:52;;;9938:29;9960:6;9938:29;;;9929:39;;;;9734:239;-1:-1;;;9734:239;9980:176;10088:62;10144:5;10088:62;;10324:144;10411:51;10456:5;10411:51;;10475:158;10569:58;10621:5;10569:58;;11154:395;;11314:67;11378:2;11373:3;11314:67;;;11414:34;11394:55;;11483:28;11478:2;11469:12;;11462:50;11540:2;11531:12;;11300:249;-1:-1;;11300:249;11558:329;;11718:67;11782:2;11777:3;11718:67;;;11818:31;11798:52;;11878:2;11869:12;;11704:183;-1:-1;;11704:183;11896:296;;12073:83;12154:1;12149:3;12073:83;;12201:331;;12361:67;12425:2;12420:3;12361:67;;;12461:33;12441:54;;12523:2;12514:12;;12347:185;-1:-1;;12347:185;12601:1616;12820:23;;12601:1616;;12746:6;12737:16;;;12849:77;12741:3;12820:23;12849:77;;;12768:164;13010:4;13003:5;12999:16;12993:23;13022:63;13079:4;13074:3;13070:14;13056:12;13022:63;;;12942:149;13166:4;13159:5;13155:16;13149:23;13178:119;13291:4;13286:3;13282:14;13268:12;13178:119;;;13101:202;13387:4;13380:5;13376:16;13370:23;13399:63;13456:4;13451:3;13447:14;13433:12;13399:63;;;13313:155;13554:4;13547:5;13543:16;13537:23;13566:63;13623:4;13618:3;13614:14;13600:12;13566:63;;;13478:157;13716:4;13709:5;13705:16;13699:23;13728:65;13785:6;13780:3;13776:16;13762:12;13728:65;;;13645:154;13882:4;13875:5;13871:16;13865:23;13894:65;13951:6;13946:3;13942:16;13928:12;13894:65;;;13809:156;14038:4;14031:5;14027:16;14021:23;14092:3;14086:4;14082:14;14073:6;14068:3;14064:16;14057:40;14112:67;14174:4;14160:12;14112:67;;;14104:75;12719:1498;-1:-1;;;;;12719:1498;14283:821;14488:23;;14422:4;14413:14;;;14517:57;14417:3;14488:23;14517:57;;;14442:138;14661:4;14654:5;14650:16;14644:23;14673:84;14751:4;14746:3;14742:14;14728:12;14673:84;;;14590:173;14835:4;14828:5;14824:16;14818:23;14847:81;14922:4;14917:3;14913:14;14899:12;14847:81;;;14773:161;15008:4;15001:5;14997:16;14991:23;15020:63;15077:4;15072:3;15068:14;15054:12;15020:63;;;14944:145;14395:709;;;;15160:475;15366:23;;15299:4;15290:14;;;15395:63;15294:3;15366:23;15395:63;;;15319:145;15539:4;15532:5;15528:16;15522:23;15551:63;15608:4;15603:3;15599:14;15585:12;16159:103;16232:24;16250:5;16232:24;;16389:244;;16508:75;16579:3;16570:6;16508:75;;;-1:-1;16605:2;16596:12;;16496:137;-1:-1;16496:137;16640:553;;16856:93;16945:3;16936:6;16856:93;;;16849:100;;16960:73;17029:3;17020:6;16960:73;;;17055:1;17050:3;17046:11;17039:18;;17075:93;17164:3;17155:6;17075:93;;17200:1560;;17658:93;17747:3;17738:6;17658:93;;;17651:100;;17762:73;17831:3;17822:6;17762:73;;;17857:1;17852:3;17848:11;17841:18;;17877:93;17966:3;17957:6;17877:93;;;17870:100;;17981:73;18050:3;18041:6;17981:73;;;18076:1;18071:3;18067:11;18060:18;;18096:93;18185:3;18176:6;18096:93;;;18089:100;;18200:73;18269:3;18260:6;18200:73;;;18295:1;18290:3;18286:11;18279:18;;18315:93;18404:3;18395:6;18315:93;;;18308:100;;18419:73;18488:3;18479:6;18419:73;;;18514:1;18509:3;18505:11;18498:18;;18534:93;18623:3;18614:6;18534:93;;;18527:100;;18638:73;18707:3;18698:6;18638:73;;;-1:-1;18733:1;18724:11;;17639:1121;-1:-1;;;;;;;;;;17639:1121;18767:370;;18965:147;19108:3;18965:147;;19144:229;19270:2;19255:18;;19284:79;19259:9;19336:6;19284:79;;19380:324;19526:2;19511:18;;19540:71;19515:9;19584:6;19540:71;;;19622:72;19690:2;19679:9;19675:18;19666:6;19622:72;;19711:796;20045:2;20059:47;;;20030:18;;20120:146;20030:18;20252:6;20120:146;;;20112:154;;20314:9;20308:4;20304:20;20299:2;20288:9;20284:18;20277:48;20339:158;20492:4;20483:6;20339:158;;20514:201;20626:2;20611:18;;20640:65;20615:9;20678:6;20640:65;;20722:263;20865:2;20850:18;;20879:96;20854:9;20948:6;20879:96;;21240:301;21378:2;21392:47;;;21363:18;;21453:78;21363:18;21517:6;21453:78;;21548:407;21739:2;21753:47;;;21724:18;;21814:131;21724:18;21814:131;;21962:407;22153:2;22167:47;;;22138:18;;22228:131;22138:18;22228:131;;22376:407;22567:2;22581:47;;;22552:18;;22642:131;22552:18;22642:131;;22790:416;22982:2;22967:18;;22996:117;22971:9;23086:6;22996:117;;;23124:72;23192:2;23181:9;23177:18;23168:6;23124:72;;23213:213;23331:2;23316:18;;23345:71;23320:9;23389:6;23345:71;;23433:256;23495:2;23489:9;23521:17;;;23596:18;23581:34;;23617:22;;;23578:62;23575:2;;;23653:1;23650;23643:12;23575:2;23669;23662:22;23473:216;;-1:-1;23473:216;23696:176;23845:4;23836:14;;23793:79;24056:162;24184:12;;24155:63;25044:203;25187:19;;;25236:4;25227:14;;25180:67;25947:91;;26009:24;26027:5;26009:24;;26151:85;26217:13;26210:21;;26193:43;26243:144;26315:66;26304:78;;26287:100;26394:144;26466:66;26455:78;;26438:100;26545:72;26607:5;26590:27;26624:138;26702:5;26708:49;26702:5;26708:49;;26769:152;26854:5;26860:56;26854:5;26860:56;;27081:113;27154:34;27143:46;;27126:68;27201:121;27274:42;27263:54;;27246:76;27408:129;;27495:37;27526:5;27544:171;;27648:62;27704:5;27648:62;;28147:138;;28240:40;28274:5;28240:40;;28292:152;;28392:47;28433:5;28392:47;;28848:268;28913:1;28920:101;28934:6;28931:1;28928:13;28920:101;;;29001:11;;;28995:18;28982:11;;;28975:39;28956:2;28949:10;28920:101;;;29036:6;29033:1;29030:13;29027:2;;;-1:-1;;29101:1;29083:16;;29076:27;28897:219;29365:97;29453:2;29433:14;29449:7;29429:28;;29413:49;29470:107;29555:1;29548:5;29545:12;29535:2;;29561:9;29535:2;29529:48;;29584:114;29676:1;29669:5;29666:12;29656:2;;29682:9;29823:117;29892:24;29910:5;29892:24;;;29885:5;29882:35;29872:2;;29931:1;29928;29921:12;30087:111;30153:21;30168:5;30153:21;;30205:115;30295:1;30288:5;30285:12;30275:2;;30311:1;30308;30301:12;30327:117;30396:24;30414:5;30396:24;;30451:117;30520:24;30538:5;30520:24;",
  "source": "/*\n\n    Copyright 2022 Dolomite.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { ReentrancyGuard } from \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IDolomiteMargin } from \"../../protocol/interfaces/IDolomiteMargin.sol\";\n\nimport { Account } from \"../../protocol/lib/Account.sol\";\nimport { Actions } from \"../../protocol/lib/Actions.sol\";\nimport { Require } from \"../../protocol/lib/Require.sol\";\nimport { Types } from \"../../protocol/lib/Types.sol\";\n\nimport { OnlyDolomiteMargin } from \"../helpers/OnlyDolomiteMargin.sol\";\nimport { AccountActionLib } from \"../lib/AccountActionLib.sol\";\nimport { AccountBalanceLib } from \"../lib/AccountBalanceLib.sol\";\n\nimport { IDepositWithdrawalProxy } from \"../interfaces/IDepositWithdrawalProxy.sol\";\nimport { IWETH } from \"../interfaces/IWETH.sol\";\n\n\n/**\n * @title DepositWithdrawalProxy\n * @author Dolomite\n *\n * @dev Contract for depositing or withdrawing to/from Dolomite easily. This lowers gas costs on Arbitrum by minimizing\n *      callData\n */\ncontract DepositWithdrawalProxy is IDepositWithdrawalProxy, OnlyDolomiteMargin, ReentrancyGuard {\n    using Address for address payable;\n\n    // ============ Constants ============\n\n    bytes32 private constant FILE = \"DepositWithdrawalProxy\";\n\n    // ============ Field Variables ============\n\n    IWETH public WRAPPED_PAYABLE_TOKEN;\n    uint256 public PAYABLE_MARKET_ID;\n    bool public g_initialized;\n\n    // ============ Modifiers ============\n\n    modifier requireIsInitialized() {\n        Require.that(\n            g_initialized,\n            FILE,\n            \"not initialized\"\n        );\n        _;\n    }\n\n    // ============ Constructor ============\n\n    constructor (\n        address _dolomiteMargin\n    )\n    public\n    OnlyDolomiteMargin(_dolomiteMargin)\n    {}\n\n    // ============ External Functions ============\n\n    function() external payable {\n        Require.that(\n            msg.sender == address(WRAPPED_PAYABLE_TOKEN),\n            FILE,\n            \"invalid Payable sender\"\n        );\n    }\n\n    function initializePayableMarket(\n        address payable _payableToken\n    ) external {\n        Require.that(\n            !g_initialized,\n            FILE,\n            \"already initialized\"\n        );\n        g_initialized = true;\n        WRAPPED_PAYABLE_TOKEN = IWETH(_payableToken);\n        PAYABLE_MARKET_ID = DOLOMITE_MARGIN.getMarketIdByTokenAddress(_payableToken);\n        WRAPPED_PAYABLE_TOKEN.approve(address(DOLOMITE_MARGIN), uint(-1));\n    }\n\n    function depositWei(\n        uint256 _toAccountNumber,\n        uint256 _marketId,\n        uint256 _amountWei\n    )\n    external\n    nonReentrant {\n        AccountActionLib.deposit(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            /* _fromAccount = */ msg.sender, // solium-disable-line indentation\n            _toAccountNumber,\n            _marketId,\n            Types.AssetAmount({\n                sign: true,\n                denomination: Types.AssetDenomination.Wei,\n                ref: Types.AssetReference.Delta,\n                value: _amountWei == uint(-1) ? _getSenderBalance(_marketId) : _amountWei\n            })\n        );\n    }\n\n    function depositPayable(\n        uint256 _toAccountNumber\n    )\n    external\n    payable\n    requireIsInitialized\n    nonReentrant {\n        _wrap();\n        AccountActionLib.deposit(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            /* _fromAccount = */ address(this), // solium-disable-line indentation\n            _toAccountNumber,\n            PAYABLE_MARKET_ID,\n            Types.AssetAmount({\n                sign: true,\n                denomination: Types.AssetDenomination.Wei,\n                ref: Types.AssetReference.Delta,\n                value: msg.value\n            })\n        );\n    }\n\n    function depositWeiIntoDefaultAccount(\n        uint256 _marketId,\n        uint256 _amountWei\n    )\n    external\n    nonReentrant {\n        AccountActionLib.deposit(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            /* _fromAccount = */ msg.sender, // solium-disable-line indentation\n            /* _toAccountNumber = */ 0, // solium-disable-line indentation\n            _marketId,\n            Types.AssetAmount({\n                sign: true,\n                denomination: Types.AssetDenomination.Wei,\n                ref: Types.AssetReference.Delta,\n                value: _amountWei == uint(-1) ? _getSenderBalance(_marketId) : _amountWei\n            })\n        );\n    }\n\n    function depositPayableIntoDefaultAccount()\n    external\n    payable\n    requireIsInitialized\n    nonReentrant {\n        _wrap();\n        AccountActionLib.deposit(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            /* _fromAccount = */ address(this), // solium-disable-line indentation\n            /* _toAccountNumber = */ 0, // solium-disable-line indentation\n            PAYABLE_MARKET_ID,\n            Types.AssetAmount({\n                sign: true,\n                denomination: Types.AssetDenomination.Wei,\n                ref: Types.AssetReference.Delta,\n                value: msg.value\n            })\n        );\n    }\n\n    function withdrawWei(\n        uint256 _fromAccountNumber,\n        uint256 _marketId,\n        uint256 _amountWei,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    )\n    external\n    nonReentrant {\n        AccountActionLib.withdraw(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            _fromAccountNumber,\n            /* _toAccount = */ msg.sender, // solium-disable-line indentation\n            _marketId,\n            Types.AssetAmount({\n                sign: false,\n                denomination: Types.AssetDenomination.Wei,\n                ref: _amountWei == uint(-1) ? Types.AssetReference.Target : Types.AssetReference.Delta,\n                value: _amountWei == uint(-1) ? 0 : _amountWei\n            }),\n            _balanceCheckFlag\n        );\n    }\n\n    function withdrawPayable(\n        uint256 _fromAccountNumber,\n        uint256 _amountWei,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    )\n    external\n    requireIsInitialized\n    nonReentrant {\n        AccountActionLib.withdraw(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            _fromAccountNumber,\n            /* _toAccount = */ address(this), // solium-disable-line indentation\n            PAYABLE_MARKET_ID,\n            Types.AssetAmount({\n                sign: false,\n                denomination: Types.AssetDenomination.Wei,\n                ref: _amountWei == uint(-1) ? Types.AssetReference.Target : Types.AssetReference.Delta,\n                value: _amountWei == uint(-1) ? 0 : _amountWei\n            }),\n            _balanceCheckFlag\n        );\n        _unwrapAndSend();\n    }\n\n    function withdrawWeiFromDefaultAccount(\n        uint256 _marketId,\n        uint256 _amountWei,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    )\n    external\n    nonReentrant {\n        AccountActionLib.withdraw(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            /* _fromAccountNumber = */ 0, // solium-disable-line indentation\n            /* _toAccount = */ msg.sender, // solium-disable-line indentation\n            _marketId,\n            Types.AssetAmount({\n                sign: false,\n                denomination: Types.AssetDenomination.Wei,\n                ref: _amountWei == uint(-1) ? Types.AssetReference.Target : Types.AssetReference.Delta,\n                value: _amountWei == uint(-1) ? 0 : _amountWei\n            }),\n            _balanceCheckFlag\n        );\n    }\n\n    function withdrawPayableFromDefaultAccount(\n        uint256 _amountWei,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    )\n    external\n    requireIsInitialized\n    nonReentrant {\n        AccountActionLib.withdraw(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            /* _fromAccountNumber = */ 0, // solium-disable-line indentation\n            /* _toAccount = */ address(this), // solium-disable-line indentation\n            PAYABLE_MARKET_ID,\n            Types.AssetAmount({\n                sign: false,\n                denomination: Types.AssetDenomination.Wei,\n                ref: _amountWei == uint(-1) ? Types.AssetReference.Target : Types.AssetReference.Delta,\n                value: _amountWei == uint(-1) ? 0 : _amountWei\n            }),\n            _balanceCheckFlag\n        );\n        _unwrapAndSend();\n    }\n\n    // ========================= Par Functions =========================\n\n    function depositPar(\n        uint256 _toAccountNumber,\n        uint256 _marketId,\n        uint256 _amountPar\n    )\n    external\n    nonReentrant {\n        AccountActionLib.deposit(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            /* _fromAccount = */ msg.sender, // solium-disable-line indentation\n            _toAccountNumber,\n            _marketId,\n            Types.AssetAmount({\n                sign: true,\n                denomination: Types.AssetDenomination.Par,\n                ref: Types.AssetReference.Delta,\n                value: _amountPar\n            })\n        );\n    }\n\n    function depositParIntoDefaultAccount(\n        uint256 _marketId,\n        uint256 _amountPar\n    )\n    external\n    nonReentrant {\n        AccountActionLib.deposit(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            /* _fromAccount = */ msg.sender, // solium-disable-line indentation\n            /* _toAccountNumber = */ 0, // solium-disable-line indentation\n            _marketId,\n            Types.AssetAmount({\n                sign: true,\n                denomination: Types.AssetDenomination.Par,\n                ref: Types.AssetReference.Delta,\n                value: _amountPar\n            })\n        );\n    }\n\n    function withdrawPar(\n        uint256 _fromAccountNumber,\n        uint256 _marketId,\n        uint256 _amountPar,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    )\n    external\n    nonReentrant {\n        AccountActionLib.withdraw(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            _fromAccountNumber,\n            /* _toAccount = */ msg.sender, // solium-disable-line indentation\n            _marketId,\n            Types.AssetAmount({\n                sign: false,\n                denomination: Types.AssetDenomination.Par,\n                ref: _amountPar == uint(-1) ? Types.AssetReference.Target : Types.AssetReference.Delta,\n                value: _amountPar == uint(-1) ? 0 : _amountPar\n            }),\n            _balanceCheckFlag\n        );\n    }\n\n    function withdrawParFromDefaultAccount(\n        uint256 _marketId,\n        uint256 _amountPar,\n        AccountBalanceLib.BalanceCheckFlag _balanceCheckFlag\n    )\n    external\n    nonReentrant {\n        AccountActionLib.withdraw(\n            DOLOMITE_MARGIN,\n            /* _accountOwner = */ msg.sender, // solium-disable-line indentation\n            /* _fromAccountNumber = */ 0, // solium-disable-line indentation\n            /* _toAccount = */ msg.sender, // solium-disable-line indentation\n            _marketId,\n            Types.AssetAmount({\n                sign: false,\n                denomination: Types.AssetDenomination.Par,\n                ref: _amountPar == uint(-1) ? Types.AssetReference.Target : Types.AssetReference.Delta,\n                value: _amountPar == uint(-1) ? 0 : _amountPar\n            }),\n            _balanceCheckFlag\n        );\n    }\n\n    // ============ Internal Functions ============\n\n    function _wrap() internal {\n        WRAPPED_PAYABLE_TOKEN.deposit.value(msg.value)();\n    }\n\n    function _unwrapAndSend() internal {\n        IWETH wrappedPayableToken = WRAPPED_PAYABLE_TOKEN;\n        uint amount = wrappedPayableToken.balanceOf(address(this));\n        wrappedPayableToken.withdraw(amount);\n        msg.sender.sendValue(amount);\n    }\n\n    function _getSenderBalance(uint256 _marketId) internal view returns (uint) {\n        return IERC20(DOLOMITE_MARGIN.getMarketTokenAddress(_marketId)).balanceOf(msg.sender);\n    }\n}\n",
  "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/DepositWithdrawalProxy.sol",
  "ast": {
    "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/DepositWithdrawalProxy.sol",
    "exportedSymbols": {
      "DepositWithdrawalProxy": [
        9912
      ]
    },
    "id": 9913,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9152,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "595:23:48"
      },
      {
        "id": 9153,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "619:33:48"
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
        "file": "@openzeppelin/contracts/utils/Address.sol",
        "id": 9155,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 37848,
        "src": "654:68:48",
        "symbolAliases": [
          {
            "foreign": 9154,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
        "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
        "id": 9157,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 38093,
        "src": "723:84:48",
        "symbolAliases": [
          {
            "foreign": 9156,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "id": 9159,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 37553,
        "src": "808:72:48",
        "symbolAliases": [
          {
            "foreign": 9158,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
        "file": "../../protocol/interfaces/IDolomiteMargin.sol",
        "id": 9161,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 24694,
        "src": "882:80:48",
        "symbolAliases": [
          {
            "foreign": 9160,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
        "file": "../../protocol/lib/Account.sol",
        "id": 9163,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 24886,
        "src": "964:57:48",
        "symbolAliases": [
          {
            "foreign": 9162,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
        "file": "../../protocol/lib/Actions.sol",
        "id": 9165,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 25370,
        "src": "1022:57:48",
        "symbolAliases": [
          {
            "foreign": 9164,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../../protocol/lib/Require.sol",
        "id": 9167,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 28453,
        "src": "1080:57:48",
        "symbolAliases": [
          {
            "foreign": 9166,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../../protocol/lib/Types.sol",
        "id": 9169,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 31362,
        "src": "1138:53:48",
        "symbolAliases": [
          {
            "foreign": 9168,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol",
        "file": "../helpers/OnlyDolomiteMargin.sol",
        "id": 9171,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 3067,
        "src": "1193:71:48",
        "symbolAliases": [
          {
            "foreign": 9170,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountActionLib.sol",
        "file": "../lib/AccountActionLib.sol",
        "id": 9173,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 5820,
        "src": "1265:63:48",
        "symbolAliases": [
          {
            "foreign": 9172,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountBalanceLib.sol",
        "file": "../lib/AccountBalanceLib.sol",
        "id": 9175,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 5892,
        "src": "1329:65:48",
        "symbolAliases": [
          {
            "foreign": 9174,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDepositWithdrawalProxy.sol",
        "file": "../interfaces/IDepositWithdrawalProxy.sol",
        "id": 9177,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 4379,
        "src": "1396:84:48",
        "symbolAliases": [
          {
            "foreign": 9176,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IWETH.sol",
        "file": "../interfaces/IWETH.sol",
        "id": 9179,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 4965,
        "src": "1481:48:48",
        "symbolAliases": [
          {
            "foreign": 9178,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9180,
              "name": "IDepositWithdrawalProxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4378,
              "src": "1768:23:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDepositWithdrawalProxy_$4378",
                "typeString": "contract IDepositWithdrawalProxy"
              }
            },
            "id": 9181,
            "nodeType": "InheritanceSpecifier",
            "src": "1768:23:48"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9182,
              "name": "OnlyDolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3066,
              "src": "1793:18:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OnlyDolomiteMargin_$3066",
                "typeString": "contract OnlyDolomiteMargin"
              }
            },
            "id": 9183,
            "nodeType": "InheritanceSpecifier",
            "src": "1793:18:48"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9184,
              "name": "ReentrancyGuard",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38092,
              "src": "1813:15:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReentrancyGuard_$38092",
                "typeString": "contract ReentrancyGuard"
              }
            },
            "id": 9185,
            "nodeType": "InheritanceSpecifier",
            "src": "1813:15:48"
          }
        ],
        "contractDependencies": [
          3066,
          4378,
          38092
        ],
        "contractKind": "contract",
        "documentation": "@title DepositWithdrawalProxy\n@author Dolomite\n * @dev Contract for depositing or withdrawing to/from Dolomite easily. This lowers gas costs on Arbitrum by minimizing\n     callData",
        "fullyImplemented": true,
        "id": 9912,
        "linearizedBaseContracts": [
          9912,
          38092,
          3066,
          4378
        ],
        "name": "DepositWithdrawalProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9188,
            "libraryName": {
              "contractScope": null,
              "id": 9186,
              "name": "Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37847,
              "src": "1841:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Address_$37847",
                "typeString": "library Address"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1835:34:48",
            "typeName": {
              "id": 9187,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1853:15:48",
              "stateMutability": "payable",
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              }
            }
          },
          {
            "constant": true,
            "id": 9191,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 9912,
            "src": "1919:56:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 9189,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1919:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4465706f7369745769746864726177616c50726f7879",
              "id": 9190,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1951:24:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_be9deccd80149d75e6b7acef128e8004579bbf260db39790e12beb7bedce87ef",
                "typeString": "literal_string \"DepositWithdrawalProxy\""
              },
              "value": "DepositWithdrawalProxy"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 9193,
            "name": "WRAPPED_PAYABLE_TOKEN",
            "nodeType": "VariableDeclaration",
            "scope": 9912,
            "src": "2032:34:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IWETH_$4964",
              "typeString": "contract IWETH"
            },
            "typeName": {
              "contractScope": null,
              "id": 9192,
              "name": "IWETH",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4964,
              "src": "2032:5:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IWETH_$4964",
                "typeString": "contract IWETH"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9195,
            "name": "PAYABLE_MARKET_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9912,
            "src": "2072:32:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9194,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2072:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9197,
            "name": "g_initialized",
            "nodeType": "VariableDeclaration",
            "scope": 9912,
            "src": "2110:25:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 9196,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "2110:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9208,
              "nodeType": "Block",
              "src": "2218:126:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9202,
                        "name": "g_initialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9197,
                        "src": "2254:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9203,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9191,
                        "src": "2281:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420696e697469616c697a6564",
                        "id": 9204,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2299:17:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_23128ea0a9cf9f377be270d76b35163b9b8a58c0fa7025ab8017ab08d983de01",
                          "typeString": "literal_string \"not initialized\""
                        },
                        "value": "not initialized"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_23128ea0a9cf9f377be270d76b35163b9b8a58c0fa7025ab8017ab08d983de01",
                          "typeString": "literal_string \"not initialized\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9199,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2228:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 9201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "2228:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 9205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2228:98:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9206,
                  "nodeType": "ExpressionStatement",
                  "src": "2228:98:48"
                },
                {
                  "id": 9207,
                  "nodeType": "PlaceholderStatement",
                  "src": "2336:1:48"
                }
              ]
            },
            "documentation": null,
            "id": 9209,
            "name": "requireIsInitialized",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9198,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2215:2:48"
            },
            "src": "2186:158:48",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9217,
              "nodeType": "Block",
              "src": "2503:2:48",
              "statements": []
            },
            "documentation": null,
            "id": 9218,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9214,
                    "name": "_dolomiteMargin",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9211,
                    "src": "2482:15:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 9215,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9213,
                  "name": "OnlyDolomiteMargin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3066,
                  "src": "2463:18:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_OnlyDolomiteMargin_$3066_$",
                    "typeString": "type(contract OnlyDolomiteMargin)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2463:35:48"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9212,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9211,
                  "name": "_dolomiteMargin",
                  "nodeType": "VariableDeclaration",
                  "scope": 9218,
                  "src": "2418:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9210,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2418:7:48",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2408:39:48"
            },
            "returnParameters": {
              "id": 9216,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2503:0:48"
            },
            "scope": 9912,
            "src": "2396:109:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9234,
              "nodeType": "Block",
              "src": "2592:153:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 9229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9224,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38107,
                            "src": "2628:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 9225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2628:10:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9227,
                              "name": "WRAPPED_PAYABLE_TOKEN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9193,
                              "src": "2650:21:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$4964",
                                "typeString": "contract IWETH"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWETH_$4964",
                                "typeString": "contract IWETH"
                              }
                            ],
                            "id": 9226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2642:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 9228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2642:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2628:44:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9230,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9191,
                        "src": "2686:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642050617961626c652073656e646572",
                        "id": 9231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2704:24:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ec6b3cb5776230d3a0a5de66dac6f34b470ded367a4268e51f61dae8e655c916",
                          "typeString": "literal_string \"invalid Payable sender\""
                        },
                        "value": "invalid Payable sender"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ec6b3cb5776230d3a0a5de66dac6f34b470ded367a4268e51f61dae8e655c916",
                          "typeString": "literal_string \"invalid Payable sender\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9221,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2602:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 9223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "2602:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 9232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2602:136:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9233,
                  "nodeType": "ExpressionStatement",
                  "src": "2602:136:48"
                }
              ]
            },
            "documentation": null,
            "id": 9235,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9219,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2572:2:48"
            },
            "returnParameters": {
              "id": 9220,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2592:0:48"
            },
            "scope": 9912,
            "src": "2564:181:48",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9278,
              "nodeType": "Block",
              "src": "2838:365:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2874:14:48",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 9243,
                          "name": "g_initialized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9197,
                          "src": "2875:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9245,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9191,
                        "src": "2902:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "616c726561647920696e697469616c697a6564",
                        "id": 9246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2920:21:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc",
                          "typeString": "literal_string \"already initialized\""
                        },
                        "value": "already initialized"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc",
                          "typeString": "literal_string \"already initialized\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9240,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2848:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 9242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "2848:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 9247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2848:103:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9248,
                  "nodeType": "ExpressionStatement",
                  "src": "2848:103:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9249,
                      "name": "g_initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9197,
                      "src": "2961:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 9250,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2977:4:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2961:20:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9252,
                  "nodeType": "ExpressionStatement",
                  "src": "2961:20:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9253,
                      "name": "WRAPPED_PAYABLE_TOKEN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9193,
                      "src": "2991:21:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWETH_$4964",
                        "typeString": "contract IWETH"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9255,
                          "name": "_payableToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9237,
                          "src": "3021:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "id": 9254,
                        "name": "IWETH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4964,
                        "src": "3015:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IWETH_$4964_$",
                          "typeString": "type(contract IWETH)"
                        }
                      },
                      "id": 9256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3015:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWETH_$4964",
                        "typeString": "contract IWETH"
                      }
                    },
                    "src": "2991:44:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWETH_$4964",
                      "typeString": "contract IWETH"
                    }
                  },
                  "id": 9258,
                  "nodeType": "ExpressionStatement",
                  "src": "2991:44:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9259,
                      "name": "PAYABLE_MARKET_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9195,
                      "src": "3045:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9262,
                          "name": "_payableToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9237,
                          "src": "3107:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 9260,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "3065:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 9261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getMarketIdByTokenAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24222,
                        "src": "3065:41:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 9263,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3065:56:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3045:76:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9265,
                  "nodeType": "ExpressionStatement",
                  "src": "3045:76:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9270,
                            "name": "DOLOMITE_MARGIN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2997,
                            "src": "3169:15:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                              "typeString": "contract IDolomiteMargin"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                              "typeString": "contract IDolomiteMargin"
                            }
                          ],
                          "id": 9269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3161:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3161:24:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "3192:2:48",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 9273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3193:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 9272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3187:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint"
                        },
                        "id": 9275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3187:8:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9266,
                        "name": "WRAPPED_PAYABLE_TOKEN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9193,
                        "src": "3131:21:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH_$4964",
                          "typeString": "contract IWETH"
                        }
                      },
                      "id": 9268,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4963,
                      "src": "3131:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 9276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3131:65:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9277,
                  "nodeType": "ExpressionStatement",
                  "src": "3131:65:48"
                }
              ]
            },
            "documentation": null,
            "id": 9279,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializePayableMarket",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9237,
                  "name": "_payableToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 9279,
                  "src": "2793:29:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 9236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2793:15:48",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2783:45:48"
            },
            "returnParameters": {
              "id": 9239,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2838:0:48"
            },
            "scope": 9912,
            "src": "2751:452:48",
            "stateMutability": "nonpayable",
            "superFunction": 4281,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9323,
              "nodeType": "Block",
              "src": "3354:568:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9293,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "3402:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9294,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "3453:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3453:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9296,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "3533:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3533:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9298,
                        "name": "_toAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9281,
                        "src": "3592:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9299,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9283,
                        "src": "3622:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3687:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9303,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "3723:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "3723:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3723:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9306,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "3773:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "3773:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3773:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9309,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9285,
                                "src": "3824:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9312,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "3843:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9311,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3844:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3838:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3838:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3824:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9318,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9285,
                              "src": "3880:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "3824:66:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9316,
                                  "name": "_marketId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9283,
                                  "src": "3867:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9315,
                                "name": "_getSenderBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9911,
                                "src": "3849:17:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 9317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3849:28:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9300,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "3645:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "3645:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "3645:260:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9290,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "3364:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9292,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "3364:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3364:551:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9322,
                  "nodeType": "ExpressionStatement",
                  "src": "3364:551:48"
                }
              ]
            },
            "documentation": null,
            "id": 9324,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9288,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9287,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "3341:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3341:12:48"
              }
            ],
            "name": "depositWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9281,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9324,
                  "src": "3238:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9280,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3238:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9283,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9324,
                  "src": "3272:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9282,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3272:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9285,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9324,
                  "src": "3299:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9284,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3299:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3228:95:48"
            },
            "returnParameters": {
              "id": 9289,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3354:0:48"
            },
            "scope": 9912,
            "src": "3209:713:48",
            "stateMutability": "nonpayable",
            "superFunction": 4290,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9361,
              "nodeType": "Block",
              "src": "4059:539:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9333,
                      "name": "_wrap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9861,
                      "src": "4069:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4069:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9335,
                  "nodeType": "ExpressionStatement",
                  "src": "4069:7:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9339,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "4124:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9340,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "4175:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4175:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9343,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "4263:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4255:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4255:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9345,
                        "name": "_toAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9326,
                        "src": "4317:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9346,
                        "name": "PAYABLE_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9195,
                        "src": "4347:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4420:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9350,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "4456:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "4456:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4456:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9353,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "4506:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "4506:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4506:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9356,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38107,
                              "src": "4557:3:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4557:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9347,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "4378:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "4378:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "4378:203:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9336,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "4086:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "4086:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4086:505:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9360,
                  "nodeType": "ExpressionStatement",
                  "src": "4086:505:48"
                }
              ]
            },
            "documentation": null,
            "id": 9362,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9329,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9328,
                  "name": "requireIsInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9209,
                  "src": "4021:20:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4021:20:48"
              },
              {
                "arguments": null,
                "id": 9331,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9330,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "4046:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4046:12:48"
              }
            ],
            "name": "depositPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9327,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9326,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9362,
                  "src": "3961:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9325,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3961:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3951:40:48"
            },
            "returnParameters": {
              "id": 9332,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4059:0:48"
            },
            "scope": 9912,
            "src": "3928:670:48",
            "stateMutability": "payable",
            "superFunction": 4295,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9404,
              "nodeType": "Block",
              "src": "4733:613:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9374,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "4781:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9375,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "4832:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4832:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9377,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "4912:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4912:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4996:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 9380,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9364,
                        "src": "5046:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5111:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9384,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "5147:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "5147:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5147:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9387,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "5197:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "5197:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5197:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9390,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9366,
                                "src": "5248:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9393,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "5267:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9392,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5268:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9391,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5262:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5262:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5248:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9399,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9366,
                              "src": "5304:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "5248:66:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9397,
                                  "name": "_marketId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9364,
                                  "src": "5291:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9396,
                                "name": "_getSenderBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9911,
                                "src": "5273:17:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 9398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5273:28:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9381,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "5069:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "5069:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "5069:260:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9371,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "4743:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9373,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "4743:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4743:596:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9403,
                  "nodeType": "ExpressionStatement",
                  "src": "4743:596:48"
                }
              ]
            },
            "documentation": null,
            "id": 9405,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9369,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9368,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "4720:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4720:12:48"
              }
            ],
            "name": "depositWeiIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9364,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9405,
                  "src": "4651:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9363,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4651:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9366,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9405,
                  "src": "4678:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4678:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4641:61:48"
            },
            "returnParameters": {
              "id": 9370,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4733:0:48"
            },
            "scope": 9912,
            "src": "4604:742:48",
            "stateMutability": "nonpayable",
            "superFunction": 4302,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9440,
              "nodeType": "Block",
              "src": "5463:584:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9412,
                      "name": "_wrap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9861,
                      "src": "5473:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5473:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9414,
                  "nodeType": "ExpressionStatement",
                  "src": "5473:7:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9418,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "5528:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9419,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "5579:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9420,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5579:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9422,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "5667:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5659:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5659:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5746:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 9425,
                        "name": "PAYABLE_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9195,
                        "src": "5796:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9428,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5869:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9429,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "5905:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "5905:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5905:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9432,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "5955:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "5955:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5955:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9435,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38107,
                              "src": "6006:3:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6006:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9426,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "5827:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "5827:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "5827:203:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9415,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "5490:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "5490:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5490:550:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9439,
                  "nodeType": "ExpressionStatement",
                  "src": "5490:550:48"
                }
              ]
            },
            "documentation": null,
            "id": 9441,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9408,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9407,
                  "name": "requireIsInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9209,
                  "src": "5425:20:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5425:20:48"
              },
              {
                "arguments": null,
                "id": 9410,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9409,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "5450:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5450:12:48"
              }
            ],
            "name": "depositPayableIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5393:2:48"
            },
            "returnParameters": {
              "id": 9411,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5463:0:48"
            },
            "scope": 9912,
            "src": "5352:695:48",
            "stateMutability": "payable",
            "superFunction": 4305,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9496,
              "nodeType": "Block",
              "src": "6263:629:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9457,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "6312:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9458,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "6363:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9459,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6363:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9460,
                        "name": "_fromAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9443,
                        "src": "6422:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9461,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "6473:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6473:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9463,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9445,
                        "src": "6532:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6597:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9467,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "6634:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "6634:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6634:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9470,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9447,
                                "src": "6684:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9473,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "6703:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9472,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6704:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6698:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6698:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6684:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9479,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "6739:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "6739:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6739:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "6684:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9476,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "6709:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "6709:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6709:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9483,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9447,
                                "src": "6790:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9486,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "6809:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9485,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6810:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6804:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9487,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6804:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6790:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9490,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9447,
                              "src": "6819:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "6790:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6815:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9464,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "6555:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "6555:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "6555:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9493,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9449,
                        "src": "6858:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9454,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "6273:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "6273:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6273:612:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9495,
                  "nodeType": "ExpressionStatement",
                  "src": "6273:612:48"
                }
              ]
            },
            "documentation": null,
            "id": 9497,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9452,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9451,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "6250:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6250:12:48"
              }
            ],
            "name": "withdrawWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9443,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9497,
                  "src": "6083:26:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9442,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6083:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9445,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9497,
                  "src": "6119:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9444,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6119:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9447,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9497,
                  "src": "6146:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9446,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6146:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9449,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9497,
                  "src": "6174:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9448,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "6174:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6073:159:48"
            },
            "returnParameters": {
              "id": 9453,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6263:0:48"
            },
            "scope": 9912,
            "src": "6053:839:48",
            "stateMutability": "nonpayable",
            "superFunction": 4316,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9556,
              "nodeType": "Block",
              "src": "7110:666:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9513,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "7159:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9514,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "7210:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7210:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9516,
                        "name": "_fromAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9499,
                        "src": "7269:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9518,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "7328:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7320:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7320:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9520,
                        "name": "PAYABLE_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9195,
                        "src": "7382:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7455:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9524,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "7492:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "7492:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7492:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9527,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9501,
                                "src": "7542:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9530,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "7561:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9529,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7562:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7556:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7556:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7542:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9536,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "7597:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "7597:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7597:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "7542:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9533,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "7567:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "7567:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7567:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9540,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9501,
                                "src": "7648:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "7667:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9542,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7668:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9541,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7662:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7662:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7648:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9547,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9501,
                              "src": "7677:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9548,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "7648:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7673:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9521,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "7413:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "7413:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9549,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "7413:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9550,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9503,
                        "src": "7716:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9510,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "7120:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9512,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "7120:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7120:623:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9552,
                  "nodeType": "ExpressionStatement",
                  "src": "7120:623:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9553,
                      "name": "_unwrapAndSend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9892,
                      "src": "7753:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7753:16:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9555,
                  "nodeType": "ExpressionStatement",
                  "src": "7753:16:48"
                }
              ]
            },
            "documentation": null,
            "id": 9557,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9506,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9505,
                  "name": "requireIsInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9209,
                  "src": "7072:20:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7072:20:48"
              },
              {
                "arguments": null,
                "id": 9508,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9507,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "7097:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7097:12:48"
              }
            ],
            "name": "withdrawPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9504,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9499,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9557,
                  "src": "6932:26:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9498,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6932:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9501,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9557,
                  "src": "6968:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9500,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6968:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9503,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9557,
                  "src": "6996:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9502,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "6996:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6922:132:48"
            },
            "returnParameters": {
              "id": 9509,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7110:0:48"
            },
            "scope": 9912,
            "src": "6898:878:48",
            "stateMutability": "nonpayable",
            "superFunction": 4325,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9610,
              "nodeType": "Block",
              "src": "7974:674:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9571,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "8023:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9572,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "8074:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8074:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8160:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9575,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "8229:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8229:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9577,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9559,
                        "src": "8288:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9580,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8353:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9581,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "8390:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "8390:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8390:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9584,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9561,
                                "src": "8440:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9587,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "8459:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9586,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8460:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9585,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8454:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8454:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8440:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9593,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "8495:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9594,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "8495:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8495:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "8440:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9590,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "8465:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9591,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "8465:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8465:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9597,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9561,
                                "src": "8546:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "8565:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9599,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8566:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8560:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8560:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8546:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9604,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9561,
                              "src": "8575:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "8546:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8571:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9578,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "8311:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "8311:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9606,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "8311:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9607,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9563,
                        "src": "8614:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9568,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "7984:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9570,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "7984:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7984:657:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9609,
                  "nodeType": "ExpressionStatement",
                  "src": "7984:657:48"
                }
              ]
            },
            "documentation": null,
            "id": 9611,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9566,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9565,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "7961:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7961:12:48"
              }
            ],
            "name": "withdrawWeiFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9559,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9611,
                  "src": "7830:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9558,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7830:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9561,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9611,
                  "src": "7857:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9560,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7857:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9563,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9611,
                  "src": "7885:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9562,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "7885:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7820:123:48"
            },
            "returnParameters": {
              "id": 9567,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7974:0:48"
            },
            "scope": 9912,
            "src": "7782:866:48",
            "stateMutability": "nonpayable",
            "superFunction": 4334,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9668,
              "nodeType": "Block",
              "src": "8848:711:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9625,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "8897:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9626,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "8948:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8948:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9034:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9630,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "9111:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9103:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9631,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9103:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9632,
                        "name": "PAYABLE_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9195,
                        "src": "9165:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9238:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9636,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "9275:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "9275:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9275:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9639,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9613,
                                "src": "9325:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9642,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "9344:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9641,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9345:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9640,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9339:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9339:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9325:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9648,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "9380:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "9380:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9380:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "9325:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9645,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "9350:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "9350:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9350:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9652,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9613,
                                "src": "9431:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "9450:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9654,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9451:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9653,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9445:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9445:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9431:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9659,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9613,
                              "src": "9460:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "9431:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9456:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9633,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "9196:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "9196:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "9196:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9662,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9615,
                        "src": "9499:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9622,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "8858:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "8858:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9663,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8858:668:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9664,
                  "nodeType": "ExpressionStatement",
                  "src": "8858:668:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9665,
                      "name": "_unwrapAndSend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9892,
                      "src": "9536:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9536:16:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9667,
                  "nodeType": "ExpressionStatement",
                  "src": "9536:16:48"
                }
              ]
            },
            "documentation": null,
            "id": 9669,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9618,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9617,
                  "name": "requireIsInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9209,
                  "src": "8810:20:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8810:20:48"
              },
              {
                "arguments": null,
                "id": 9620,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9619,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "8835:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8835:12:48"
              }
            ],
            "name": "withdrawPayableFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9613,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9669,
                  "src": "8706:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8706:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9615,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9669,
                  "src": "8734:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9614,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "8734:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8696:96:48"
            },
            "returnParameters": {
              "id": 9621,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8848:0:48"
            },
            "scope": 9912,
            "src": "8654:905:48",
            "stateMutability": "nonpayable",
            "superFunction": 4341,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9703,
              "nodeType": "Block",
              "src": "9784:512:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9683,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "9832:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9684,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "9883:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9883:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9686,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "9963:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9963:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9688,
                        "name": "_toAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9671,
                        "src": "10022:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9689,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9673,
                        "src": "10052:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10117:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9693,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "10153:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "10153:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Par",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10153:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9696,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "10203:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "10203:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10203:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9699,
                            "name": "_amountPar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9675,
                            "src": "10254:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9690,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "10075:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "10075:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "10075:204:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9680,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "9794:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "9794:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9794:495:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9702,
                  "nodeType": "ExpressionStatement",
                  "src": "9794:495:48"
                }
              ]
            },
            "documentation": null,
            "id": 9704,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9678,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9677,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "9771:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9771:12:48"
              }
            ],
            "name": "depositPar",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9676,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9671,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9704,
                  "src": "9668:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9668:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9673,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9704,
                  "src": "9702:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9672,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9702:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9675,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9704,
                  "src": "9729:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9674,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9729:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9658:95:48"
            },
            "returnParameters": {
              "id": 9679,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9784:0:48"
            },
            "scope": 9912,
            "src": "9639:657:48",
            "stateMutability": "nonpayable",
            "superFunction": 4350,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9736,
              "nodeType": "Block",
              "src": "10431:557:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9716,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "10479:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9717,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "10530:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10530:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9719,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "10610:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9720,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10610:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10694:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 9722,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9706,
                        "src": "10744:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10809:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9726,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "10845:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "10845:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Par",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10845:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9729,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "10895:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "10895:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10895:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9732,
                            "name": "_amountPar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9708,
                            "src": "10946:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9723,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "10767:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "10767:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "10767:204:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9713,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "10441:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "10441:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10441:540:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9735,
                  "nodeType": "ExpressionStatement",
                  "src": "10441:540:48"
                }
              ]
            },
            "documentation": null,
            "id": 9737,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9711,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9710,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "10418:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10418:12:48"
              }
            ],
            "name": "depositParIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9706,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9737,
                  "src": "10349:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9705,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10349:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9708,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9737,
                  "src": "10376:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10376:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10339:61:48"
            },
            "returnParameters": {
              "id": 9712,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10431:0:48"
            },
            "scope": 9912,
            "src": "10302:686:48",
            "stateMutability": "nonpayable",
            "superFunction": 4357,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9792,
              "nodeType": "Block",
              "src": "11204:629:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9753,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "11253:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9754,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "11304:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11304:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9756,
                        "name": "_fromAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9739,
                        "src": "11363:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9757,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "11414:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11414:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9759,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9741,
                        "src": "11473:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11538:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9763,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "11575:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "11575:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Par",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11575:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9766,
                                "name": "_amountPar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9743,
                                "src": "11625:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9769,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "11644:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9768,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11645:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9767,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11639:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11639:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11625:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9775,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "11680:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "11680:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11680:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9778,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "11625:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9772,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "11650:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "11650:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9774,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11650:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9779,
                                "name": "_amountPar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9743,
                                "src": "11731:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9782,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "11750:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9781,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11751:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11745:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11745:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11731:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9786,
                              "name": "_amountPar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9743,
                              "src": "11760:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "11731:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11756:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9760,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "11496:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "11496:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "11496:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9789,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9745,
                        "src": "11799:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9750,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "11214:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "11214:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11214:612:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9791,
                  "nodeType": "ExpressionStatement",
                  "src": "11214:612:48"
                }
              ]
            },
            "documentation": null,
            "id": 9793,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9748,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9747,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "11191:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11191:12:48"
              }
            ],
            "name": "withdrawPar",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9746,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9739,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9793,
                  "src": "11024:26:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11024:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9741,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9793,
                  "src": "11060:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11060:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9743,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9793,
                  "src": "11087:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9742,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11087:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9745,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9793,
                  "src": "11115:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9744,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "11115:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11014:159:48"
            },
            "returnParameters": {
              "id": 9749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11204:0:48"
            },
            "scope": 9912,
            "src": "10994:839:48",
            "stateMutability": "nonpayable",
            "superFunction": 4368,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9846,
              "nodeType": "Block",
              "src": "12031:674:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9807,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "12080:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9808,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "12131:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9809,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12131:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12217:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9811,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "12286:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9812,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12286:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9813,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9795,
                        "src": "12345:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12410:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9817,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "12447:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "12447:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Par",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12447:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9820,
                                "name": "_amountPar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9797,
                                "src": "12497:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9823,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "12516:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12517:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12511:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12511:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12497:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9829,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "12552:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "12552:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12552:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "12497:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9826,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "12522:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "12522:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12522:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9838,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9833,
                                "name": "_amountPar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9797,
                                "src": "12603:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "12622:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9835,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12623:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9834,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12617:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12617:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12603:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9840,
                              "name": "_amountPar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9797,
                              "src": "12632:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "12603:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12628:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9814,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "12368:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "12368:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9842,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "12368:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9843,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9799,
                        "src": "12671:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9804,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "12041:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9806,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "12041:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12041:657:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9845,
                  "nodeType": "ExpressionStatement",
                  "src": "12041:657:48"
                }
              ]
            },
            "documentation": null,
            "id": 9847,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9802,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9801,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "12018:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12018:12:48"
              }
            ],
            "name": "withdrawParFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9795,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9847,
                  "src": "11887:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9794,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11887:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9797,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9847,
                  "src": "11914:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9796,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11914:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9799,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9847,
                  "src": "11942:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9798,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "11942:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11877:123:48"
            },
            "returnParameters": {
              "id": 9803,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12031:0:48"
            },
            "scope": 9912,
            "src": "11839:866:48",
            "stateMutability": "nonpayable",
            "superFunction": 4377,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9860,
              "nodeType": "Block",
              "src": "12790:65:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9855,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38107,
                            "src": "12836:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 9856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12836:9:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9850,
                            "name": "WRAPPED_PAYABLE_TOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9193,
                            "src": "12800:21:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$4964",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 9853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "deposit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4933,
                          "src": "12800:29:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 9854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12800:35:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                          "typeString": "function (uint256) pure returns (function () payable external)"
                        }
                      },
                      "id": 9857,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12800:46:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                        "typeString": "function () payable external"
                      }
                    },
                    "id": 9858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12800:48:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9859,
                  "nodeType": "ExpressionStatement",
                  "src": "12800:48:48"
                }
              ]
            },
            "documentation": null,
            "id": 9861,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_wrap",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9848,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12778:2:48"
            },
            "returnParameters": {
              "id": 9849,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12790:0:48"
            },
            "scope": 9912,
            "src": "12764:91:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9891,
              "nodeType": "Block",
              "src": "12896:218:48",
              "statements": [
                {
                  "assignments": [
                    9865
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9865,
                      "name": "wrappedPayableToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 9891,
                      "src": "12906:25:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWETH_$4964",
                        "typeString": "contract IWETH"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9864,
                        "name": "IWETH",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4964,
                        "src": "12906:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH_$4964",
                          "typeString": "contract IWETH"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9867,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 9866,
                    "name": "WRAPPED_PAYABLE_TOKEN",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9193,
                    "src": "12934:21:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWETH_$4964",
                      "typeString": "contract IWETH"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12906:49:48"
                },
                {
                  "assignments": [
                    9869
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9869,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 9891,
                      "src": "12965:11:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9868,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12965:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9876,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9873,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "13017:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13009:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13009:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9870,
                        "name": "wrappedPayableToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9865,
                        "src": "12979:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH_$4964",
                          "typeString": "contract IWETH"
                        }
                      },
                      "id": 9871,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4954,
                      "src": "12979:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 9875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12979:44:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12965:58:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9880,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9869,
                        "src": "13062:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9877,
                        "name": "wrappedPayableToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9865,
                        "src": "13033:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH_$4964",
                          "typeString": "contract IWETH"
                        }
                      },
                      "id": 9879,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4947,
                      "src": "13033:28:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 9881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13033:36:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9882,
                  "nodeType": "ExpressionStatement",
                  "src": "13033:36:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9888,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9869,
                        "src": "13100:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9883,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "13079:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13079:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 9887,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sendValue",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 37846,
                      "src": "13079:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$bound_to$_t_address_payable_$",
                        "typeString": "function (address payable,uint256)"
                      }
                    },
                    "id": 9889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13079:28:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9890,
                  "nodeType": "ExpressionStatement",
                  "src": "13079:28:48"
                }
              ]
            },
            "documentation": null,
            "id": 9892,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_unwrapAndSend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9862,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12884:2:48"
            },
            "returnParameters": {
              "id": 9863,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12896:0:48"
            },
            "scope": 9912,
            "src": "12861:253:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9910,
              "nodeType": "Block",
              "src": "13195:102:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9906,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "13279:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13279:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9902,
                                "name": "_marketId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9894,
                                "src": "13257:9:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9900,
                                "name": "DOLOMITE_MARGIN",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2997,
                                "src": "13219:15:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                  "typeString": "contract IDolomiteMargin"
                                }
                              },
                              "id": 9901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getMarketTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24229,
                              "src": "13219:37:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (uint256) view external returns (address)"
                              }
                            },
                            "id": 9903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13219:48:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9899,
                          "name": "IERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37552,
                          "src": "13212:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20_$37552_$",
                            "typeString": "type(contract IERC20)"
                          }
                        },
                        "id": 9904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13212:56:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$37552",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 9905,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 37497,
                      "src": "13212:66:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 9908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13212:78:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9898,
                  "id": 9909,
                  "nodeType": "Return",
                  "src": "13205:85:48"
                }
              ]
            },
            "documentation": null,
            "id": 9911,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getSenderBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9894,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9911,
                  "src": "13147:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9893,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13147:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13146:19:48"
            },
            "returnParameters": {
              "id": 9898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9897,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9911,
                  "src": "13189:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9896,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "13189:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13188:6:48"
            },
            "scope": 9912,
            "src": "13120:177:48",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 9913,
        "src": "1733:11566:48"
      }
    ],
    "src": "595:12705:48"
  },
  "legacyAST": {
    "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/DepositWithdrawalProxy.sol",
    "exportedSymbols": {
      "DepositWithdrawalProxy": [
        9912
      ]
    },
    "id": 9913,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9152,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "595:23:48"
      },
      {
        "id": 9153,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "619:33:48"
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
        "file": "@openzeppelin/contracts/utils/Address.sol",
        "id": 9155,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 37848,
        "src": "654:68:48",
        "symbolAliases": [
          {
            "foreign": 9154,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
        "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
        "id": 9157,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 38093,
        "src": "723:84:48",
        "symbolAliases": [
          {
            "foreign": 9156,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "id": 9159,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 37553,
        "src": "808:72:48",
        "symbolAliases": [
          {
            "foreign": 9158,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
        "file": "../../protocol/interfaces/IDolomiteMargin.sol",
        "id": 9161,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 24694,
        "src": "882:80:48",
        "symbolAliases": [
          {
            "foreign": 9160,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
        "file": "../../protocol/lib/Account.sol",
        "id": 9163,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 24886,
        "src": "964:57:48",
        "symbolAliases": [
          {
            "foreign": 9162,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
        "file": "../../protocol/lib/Actions.sol",
        "id": 9165,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 25370,
        "src": "1022:57:48",
        "symbolAliases": [
          {
            "foreign": 9164,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../../protocol/lib/Require.sol",
        "id": 9167,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 28453,
        "src": "1080:57:48",
        "symbolAliases": [
          {
            "foreign": 9166,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../../protocol/lib/Types.sol",
        "id": 9169,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 31362,
        "src": "1138:53:48",
        "symbolAliases": [
          {
            "foreign": 9168,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol",
        "file": "../helpers/OnlyDolomiteMargin.sol",
        "id": 9171,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 3067,
        "src": "1193:71:48",
        "symbolAliases": [
          {
            "foreign": 9170,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountActionLib.sol",
        "file": "../lib/AccountActionLib.sol",
        "id": 9173,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 5820,
        "src": "1265:63:48",
        "symbolAliases": [
          {
            "foreign": 9172,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/AccountBalanceLib.sol",
        "file": "../lib/AccountBalanceLib.sol",
        "id": 9175,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 5892,
        "src": "1329:65:48",
        "symbolAliases": [
          {
            "foreign": 9174,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IDepositWithdrawalProxy.sol",
        "file": "../interfaces/IDepositWithdrawalProxy.sol",
        "id": 9177,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 4379,
        "src": "1396:84:48",
        "symbolAliases": [
          {
            "foreign": 9176,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IWETH.sol",
        "file": "../interfaces/IWETH.sol",
        "id": 9179,
        "nodeType": "ImportDirective",
        "scope": 9913,
        "sourceUnit": 4965,
        "src": "1481:48:48",
        "symbolAliases": [
          {
            "foreign": 9178,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9180,
              "name": "IDepositWithdrawalProxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4378,
              "src": "1768:23:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDepositWithdrawalProxy_$4378",
                "typeString": "contract IDepositWithdrawalProxy"
              }
            },
            "id": 9181,
            "nodeType": "InheritanceSpecifier",
            "src": "1768:23:48"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9182,
              "name": "OnlyDolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3066,
              "src": "1793:18:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OnlyDolomiteMargin_$3066",
                "typeString": "contract OnlyDolomiteMargin"
              }
            },
            "id": 9183,
            "nodeType": "InheritanceSpecifier",
            "src": "1793:18:48"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9184,
              "name": "ReentrancyGuard",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38092,
              "src": "1813:15:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReentrancyGuard_$38092",
                "typeString": "contract ReentrancyGuard"
              }
            },
            "id": 9185,
            "nodeType": "InheritanceSpecifier",
            "src": "1813:15:48"
          }
        ],
        "contractDependencies": [
          3066,
          4378,
          38092
        ],
        "contractKind": "contract",
        "documentation": "@title DepositWithdrawalProxy\n@author Dolomite\n * @dev Contract for depositing or withdrawing to/from Dolomite easily. This lowers gas costs on Arbitrum by minimizing\n     callData",
        "fullyImplemented": true,
        "id": 9912,
        "linearizedBaseContracts": [
          9912,
          38092,
          3066,
          4378
        ],
        "name": "DepositWithdrawalProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9188,
            "libraryName": {
              "contractScope": null,
              "id": 9186,
              "name": "Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37847,
              "src": "1841:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Address_$37847",
                "typeString": "library Address"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1835:34:48",
            "typeName": {
              "id": 9187,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1853:15:48",
              "stateMutability": "payable",
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              }
            }
          },
          {
            "constant": true,
            "id": 9191,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 9912,
            "src": "1919:56:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 9189,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1919:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4465706f7369745769746864726177616c50726f7879",
              "id": 9190,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1951:24:48",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_be9deccd80149d75e6b7acef128e8004579bbf260db39790e12beb7bedce87ef",
                "typeString": "literal_string \"DepositWithdrawalProxy\""
              },
              "value": "DepositWithdrawalProxy"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 9193,
            "name": "WRAPPED_PAYABLE_TOKEN",
            "nodeType": "VariableDeclaration",
            "scope": 9912,
            "src": "2032:34:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IWETH_$4964",
              "typeString": "contract IWETH"
            },
            "typeName": {
              "contractScope": null,
              "id": 9192,
              "name": "IWETH",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4964,
              "src": "2032:5:48",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IWETH_$4964",
                "typeString": "contract IWETH"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9195,
            "name": "PAYABLE_MARKET_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9912,
            "src": "2072:32:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 9194,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2072:7:48",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9197,
            "name": "g_initialized",
            "nodeType": "VariableDeclaration",
            "scope": 9912,
            "src": "2110:25:48",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 9196,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "2110:4:48",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9208,
              "nodeType": "Block",
              "src": "2218:126:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9202,
                        "name": "g_initialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9197,
                        "src": "2254:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9203,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9191,
                        "src": "2281:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f7420696e697469616c697a6564",
                        "id": 9204,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2299:17:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_23128ea0a9cf9f377be270d76b35163b9b8a58c0fa7025ab8017ab08d983de01",
                          "typeString": "literal_string \"not initialized\""
                        },
                        "value": "not initialized"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_23128ea0a9cf9f377be270d76b35163b9b8a58c0fa7025ab8017ab08d983de01",
                          "typeString": "literal_string \"not initialized\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9199,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2228:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 9201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "2228:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 9205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2228:98:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9206,
                  "nodeType": "ExpressionStatement",
                  "src": "2228:98:48"
                },
                {
                  "id": 9207,
                  "nodeType": "PlaceholderStatement",
                  "src": "2336:1:48"
                }
              ]
            },
            "documentation": null,
            "id": 9209,
            "name": "requireIsInitialized",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9198,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2215:2:48"
            },
            "src": "2186:158:48",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9217,
              "nodeType": "Block",
              "src": "2503:2:48",
              "statements": []
            },
            "documentation": null,
            "id": 9218,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9214,
                    "name": "_dolomiteMargin",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9211,
                    "src": "2482:15:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 9215,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9213,
                  "name": "OnlyDolomiteMargin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3066,
                  "src": "2463:18:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_OnlyDolomiteMargin_$3066_$",
                    "typeString": "type(contract OnlyDolomiteMargin)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2463:35:48"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9212,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9211,
                  "name": "_dolomiteMargin",
                  "nodeType": "VariableDeclaration",
                  "scope": 9218,
                  "src": "2418:23:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9210,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2418:7:48",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2408:39:48"
            },
            "returnParameters": {
              "id": 9216,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2503:0:48"
            },
            "scope": 9912,
            "src": "2396:109:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9234,
              "nodeType": "Block",
              "src": "2592:153:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 9229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9224,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38107,
                            "src": "2628:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 9225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2628:10:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9227,
                              "name": "WRAPPED_PAYABLE_TOKEN",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9193,
                              "src": "2650:21:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$4964",
                                "typeString": "contract IWETH"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IWETH_$4964",
                                "typeString": "contract IWETH"
                              }
                            ],
                            "id": 9226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2642:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 9228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2642:30:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2628:44:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9230,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9191,
                        "src": "2686:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e76616c69642050617961626c652073656e646572",
                        "id": 9231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2704:24:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ec6b3cb5776230d3a0a5de66dac6f34b470ded367a4268e51f61dae8e655c916",
                          "typeString": "literal_string \"invalid Payable sender\""
                        },
                        "value": "invalid Payable sender"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ec6b3cb5776230d3a0a5de66dac6f34b470ded367a4268e51f61dae8e655c916",
                          "typeString": "literal_string \"invalid Payable sender\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9221,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2602:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 9223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "2602:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 9232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2602:136:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9233,
                  "nodeType": "ExpressionStatement",
                  "src": "2602:136:48"
                }
              ]
            },
            "documentation": null,
            "id": 9235,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9219,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2572:2:48"
            },
            "returnParameters": {
              "id": 9220,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2592:0:48"
            },
            "scope": 9912,
            "src": "2564:181:48",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9278,
              "nodeType": "Block",
              "src": "2838:365:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2874:14:48",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 9243,
                          "name": "g_initialized",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9197,
                          "src": "2875:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9245,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9191,
                        "src": "2902:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "616c726561647920696e697469616c697a6564",
                        "id": 9246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2920:21:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc",
                          "typeString": "literal_string \"already initialized\""
                        },
                        "value": "already initialized"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc",
                          "typeString": "literal_string \"already initialized\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9240,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2848:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 9242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "2848:12:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 9247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2848:103:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9248,
                  "nodeType": "ExpressionStatement",
                  "src": "2848:103:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9249,
                      "name": "g_initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9197,
                      "src": "2961:13:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 9250,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2977:4:48",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2961:20:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9252,
                  "nodeType": "ExpressionStatement",
                  "src": "2961:20:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9253,
                      "name": "WRAPPED_PAYABLE_TOKEN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9193,
                      "src": "2991:21:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWETH_$4964",
                        "typeString": "contract IWETH"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9255,
                          "name": "_payableToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9237,
                          "src": "3021:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "id": 9254,
                        "name": "IWETH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4964,
                        "src": "3015:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IWETH_$4964_$",
                          "typeString": "type(contract IWETH)"
                        }
                      },
                      "id": 9256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3015:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWETH_$4964",
                        "typeString": "contract IWETH"
                      }
                    },
                    "src": "2991:44:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWETH_$4964",
                      "typeString": "contract IWETH"
                    }
                  },
                  "id": 9258,
                  "nodeType": "ExpressionStatement",
                  "src": "2991:44:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9259,
                      "name": "PAYABLE_MARKET_ID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9195,
                      "src": "3045:17:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9262,
                          "name": "_payableToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9237,
                          "src": "3107:13:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 9260,
                          "name": "DOLOMITE_MARGIN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2997,
                          "src": "3065:15:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                            "typeString": "contract IDolomiteMargin"
                          }
                        },
                        "id": 9261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getMarketIdByTokenAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24222,
                        "src": "3065:41:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                          "typeString": "function (address) view external returns (uint256)"
                        }
                      },
                      "id": 9263,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3065:56:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3045:76:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9265,
                  "nodeType": "ExpressionStatement",
                  "src": "3045:76:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9270,
                            "name": "DOLOMITE_MARGIN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2997,
                            "src": "3169:15:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                              "typeString": "contract IDolomiteMargin"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                              "typeString": "contract IDolomiteMargin"
                            }
                          ],
                          "id": 9269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3161:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3161:24:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "3192:2:48",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 9273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3193:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 9272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3187:4:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint"
                        },
                        "id": 9275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3187:8:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9266,
                        "name": "WRAPPED_PAYABLE_TOKEN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9193,
                        "src": "3131:21:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH_$4964",
                          "typeString": "contract IWETH"
                        }
                      },
                      "id": 9268,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4963,
                      "src": "3131:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 9276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3131:65:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9277,
                  "nodeType": "ExpressionStatement",
                  "src": "3131:65:48"
                }
              ]
            },
            "documentation": null,
            "id": 9279,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initializePayableMarket",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9237,
                  "name": "_payableToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 9279,
                  "src": "2793:29:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 9236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2793:15:48",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2783:45:48"
            },
            "returnParameters": {
              "id": 9239,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2838:0:48"
            },
            "scope": 9912,
            "src": "2751:452:48",
            "stateMutability": "nonpayable",
            "superFunction": 4281,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9323,
              "nodeType": "Block",
              "src": "3354:568:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9293,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "3402:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9294,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "3453:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3453:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9296,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "3533:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3533:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9298,
                        "name": "_toAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9281,
                        "src": "3592:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9299,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9283,
                        "src": "3622:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3687:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9303,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "3723:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "3723:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3723:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9306,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "3773:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "3773:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3773:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9309,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9285,
                                "src": "3824:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9312,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "3843:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9311,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3844:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3838:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3838:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3824:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9318,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9285,
                              "src": "3880:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "3824:66:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9316,
                                  "name": "_marketId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9283,
                                  "src": "3867:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9315,
                                "name": "_getSenderBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9911,
                                "src": "3849:17:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 9317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3849:28:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9300,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "3645:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "3645:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "3645:260:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9290,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "3364:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9292,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "3364:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3364:551:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9322,
                  "nodeType": "ExpressionStatement",
                  "src": "3364:551:48"
                }
              ]
            },
            "documentation": null,
            "id": 9324,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9288,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9287,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "3341:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3341:12:48"
              }
            ],
            "name": "depositWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9281,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9324,
                  "src": "3238:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9280,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3238:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9283,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9324,
                  "src": "3272:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9282,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3272:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9285,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9324,
                  "src": "3299:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9284,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3299:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3228:95:48"
            },
            "returnParameters": {
              "id": 9289,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3354:0:48"
            },
            "scope": 9912,
            "src": "3209:713:48",
            "stateMutability": "nonpayable",
            "superFunction": 4290,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9361,
              "nodeType": "Block",
              "src": "4059:539:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9333,
                      "name": "_wrap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9861,
                      "src": "4069:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4069:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9335,
                  "nodeType": "ExpressionStatement",
                  "src": "4069:7:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9339,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "4124:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9340,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "4175:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4175:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9343,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "4263:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4255:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4255:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9345,
                        "name": "_toAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9326,
                        "src": "4317:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9346,
                        "name": "PAYABLE_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9195,
                        "src": "4347:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4420:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9350,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "4456:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "4456:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4456:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9353,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "4506:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "4506:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4506:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9356,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38107,
                              "src": "4557:3:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4557:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9347,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "4378:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "4378:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "4378:203:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9336,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "4086:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "4086:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4086:505:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9360,
                  "nodeType": "ExpressionStatement",
                  "src": "4086:505:48"
                }
              ]
            },
            "documentation": null,
            "id": 9362,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9329,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9328,
                  "name": "requireIsInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9209,
                  "src": "4021:20:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4021:20:48"
              },
              {
                "arguments": null,
                "id": 9331,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9330,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "4046:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4046:12:48"
              }
            ],
            "name": "depositPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9327,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9326,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9362,
                  "src": "3961:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9325,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3961:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3951:40:48"
            },
            "returnParameters": {
              "id": 9332,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4059:0:48"
            },
            "scope": 9912,
            "src": "3928:670:48",
            "stateMutability": "payable",
            "superFunction": 4295,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9404,
              "nodeType": "Block",
              "src": "4733:613:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9374,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "4781:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9375,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "4832:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4832:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9377,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "4912:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4912:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4996:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 9380,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9364,
                        "src": "5046:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5111:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9384,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "5147:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "5147:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5147:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9387,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "5197:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "5197:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5197:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9390,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9366,
                                "src": "5248:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9393,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "5267:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9392,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5268:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9391,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5262:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5262:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5248:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9399,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9366,
                              "src": "5304:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "5248:66:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 9397,
                                  "name": "_marketId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9364,
                                  "src": "5291:9:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9396,
                                "name": "_getSenderBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9911,
                                "src": "5273:17:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) view returns (uint256)"
                                }
                              },
                              "id": 9398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5273:28:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9381,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "5069:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "5069:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "5069:260:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9371,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "4743:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9373,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "4743:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4743:596:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9403,
                  "nodeType": "ExpressionStatement",
                  "src": "4743:596:48"
                }
              ]
            },
            "documentation": null,
            "id": 9405,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9369,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9368,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "4720:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4720:12:48"
              }
            ],
            "name": "depositWeiIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9364,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9405,
                  "src": "4651:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9363,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4651:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9366,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9405,
                  "src": "4678:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4678:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4641:61:48"
            },
            "returnParameters": {
              "id": 9370,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4733:0:48"
            },
            "scope": 9912,
            "src": "4604:742:48",
            "stateMutability": "nonpayable",
            "superFunction": 4302,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9440,
              "nodeType": "Block",
              "src": "5463:584:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9412,
                      "name": "_wrap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9861,
                      "src": "5473:5:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5473:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9414,
                  "nodeType": "ExpressionStatement",
                  "src": "5473:7:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9418,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "5528:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9419,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "5579:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9420,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5579:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9422,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "5667:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5659:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9423,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5659:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5746:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 9425,
                        "name": "PAYABLE_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9195,
                        "src": "5796:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9428,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5869:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9429,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "5905:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "5905:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5905:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9432,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "5955:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "5955:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5955:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9435,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38107,
                              "src": "6006:3:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6006:9:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9426,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "5827:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "5827:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "5827:203:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9415,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "5490:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9417,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "5490:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5490:550:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9439,
                  "nodeType": "ExpressionStatement",
                  "src": "5490:550:48"
                }
              ]
            },
            "documentation": null,
            "id": 9441,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9408,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9407,
                  "name": "requireIsInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9209,
                  "src": "5425:20:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5425:20:48"
              },
              {
                "arguments": null,
                "id": 9410,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9409,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "5450:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5450:12:48"
              }
            ],
            "name": "depositPayableIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5393:2:48"
            },
            "returnParameters": {
              "id": 9411,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5463:0:48"
            },
            "scope": 9912,
            "src": "5352:695:48",
            "stateMutability": "payable",
            "superFunction": 4305,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9496,
              "nodeType": "Block",
              "src": "6263:629:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9457,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "6312:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9458,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "6363:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9459,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6363:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9460,
                        "name": "_fromAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9443,
                        "src": "6422:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9461,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "6473:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6473:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9463,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9445,
                        "src": "6532:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6597:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9467,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "6634:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "6634:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6634:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9470,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9447,
                                "src": "6684:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9473,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "6703:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9472,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6704:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6698:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6698:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6684:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9479,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "6739:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "6739:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6739:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "6684:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9476,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "6709:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "6709:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6709:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9483,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9447,
                                "src": "6790:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9486,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "6809:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9485,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6810:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6804:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9487,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6804:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6790:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9490,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9447,
                              "src": "6819:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "6790:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6815:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9464,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "6555:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "6555:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "6555:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9493,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9449,
                        "src": "6858:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9454,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "6273:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "6273:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6273:612:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9495,
                  "nodeType": "ExpressionStatement",
                  "src": "6273:612:48"
                }
              ]
            },
            "documentation": null,
            "id": 9497,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9452,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9451,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "6250:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6250:12:48"
              }
            ],
            "name": "withdrawWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9443,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9497,
                  "src": "6083:26:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9442,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6083:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9445,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9497,
                  "src": "6119:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9444,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6119:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9447,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9497,
                  "src": "6146:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9446,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6146:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9449,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9497,
                  "src": "6174:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9448,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "6174:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6073:159:48"
            },
            "returnParameters": {
              "id": 9453,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6263:0:48"
            },
            "scope": 9912,
            "src": "6053:839:48",
            "stateMutability": "nonpayable",
            "superFunction": 4316,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9556,
              "nodeType": "Block",
              "src": "7110:666:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9513,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "7159:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9514,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "7210:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7210:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9516,
                        "name": "_fromAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9499,
                        "src": "7269:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9518,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "7328:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7320:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7320:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9520,
                        "name": "PAYABLE_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9195,
                        "src": "7382:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7455:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9524,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "7492:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "7492:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7492:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9532,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9527,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9501,
                                "src": "7542:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9530,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "7561:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9529,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7562:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7556:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7556:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7542:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9536,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "7597:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "7597:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7597:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "7542:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9533,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "7567:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "7567:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7567:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9540,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9501,
                                "src": "7648:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "7667:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9542,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7668:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9541,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7662:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7662:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7648:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9547,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9501,
                              "src": "7677:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9548,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "7648:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7673:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9521,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "7413:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "7413:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9549,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "7413:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9550,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9503,
                        "src": "7716:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9510,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "7120:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9512,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "7120:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7120:623:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9552,
                  "nodeType": "ExpressionStatement",
                  "src": "7120:623:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9553,
                      "name": "_unwrapAndSend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9892,
                      "src": "7753:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7753:16:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9555,
                  "nodeType": "ExpressionStatement",
                  "src": "7753:16:48"
                }
              ]
            },
            "documentation": null,
            "id": 9557,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9506,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9505,
                  "name": "requireIsInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9209,
                  "src": "7072:20:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7072:20:48"
              },
              {
                "arguments": null,
                "id": 9508,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9507,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "7097:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7097:12:48"
              }
            ],
            "name": "withdrawPayable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9504,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9499,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9557,
                  "src": "6932:26:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9498,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6932:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9501,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9557,
                  "src": "6968:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9500,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6968:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9503,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9557,
                  "src": "6996:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9502,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "6996:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6922:132:48"
            },
            "returnParameters": {
              "id": 9509,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7110:0:48"
            },
            "scope": 9912,
            "src": "6898:878:48",
            "stateMutability": "nonpayable",
            "superFunction": 4325,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9610,
              "nodeType": "Block",
              "src": "7974:674:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9571,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "8023:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9572,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "8074:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8074:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8160:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9575,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "8229:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8229:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9577,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9559,
                        "src": "8288:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9580,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8353:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9581,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "8390:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "8390:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8390:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9584,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9561,
                                "src": "8440:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9587,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "8459:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9586,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8460:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9585,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8454:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8454:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8440:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9593,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "8495:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9594,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "8495:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8495:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "8440:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9590,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "8465:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9591,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "8465:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8465:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9597,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9561,
                                "src": "8546:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9600,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "8565:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9599,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8566:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8560:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8560:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8546:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9604,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9561,
                              "src": "8575:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "8546:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8571:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9578,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "8311:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "8311:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9606,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "8311:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9607,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9563,
                        "src": "8614:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9568,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "7984:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9570,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "7984:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7984:657:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9609,
                  "nodeType": "ExpressionStatement",
                  "src": "7984:657:48"
                }
              ]
            },
            "documentation": null,
            "id": 9611,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9566,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9565,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "7961:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7961:12:48"
              }
            ],
            "name": "withdrawWeiFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9559,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9611,
                  "src": "7830:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9558,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7830:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9561,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9611,
                  "src": "7857:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9560,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7857:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9563,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9611,
                  "src": "7885:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9562,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "7885:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7820:123:48"
            },
            "returnParameters": {
              "id": 9567,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7974:0:48"
            },
            "scope": 9912,
            "src": "7782:866:48",
            "stateMutability": "nonpayable",
            "superFunction": 4334,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9668,
              "nodeType": "Block",
              "src": "8848:711:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9625,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "8897:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9626,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "8948:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8948:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9034:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9630,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "9111:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9103:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9631,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9103:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9632,
                        "name": "PAYABLE_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9195,
                        "src": "9165:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9238:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9636,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "9275:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "9275:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9275:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9639,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9613,
                                "src": "9325:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9642,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "9344:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9641,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9345:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9640,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9339:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9339:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9325:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9648,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "9380:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "9380:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9380:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "9325:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9645,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "9350:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "9350:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9350:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9652,
                                "name": "_amountWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9613,
                                "src": "9431:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "9450:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9654,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9451:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9653,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9445:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9445:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9431:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9659,
                              "name": "_amountWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9613,
                              "src": "9460:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "9431:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9456:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9633,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "9196:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "9196:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "9196:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9662,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9615,
                        "src": "9499:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9622,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "8858:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "8858:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9663,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8858:668:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9664,
                  "nodeType": "ExpressionStatement",
                  "src": "8858:668:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 9665,
                      "name": "_unwrapAndSend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9892,
                      "src": "9536:14:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 9666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9536:16:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9667,
                  "nodeType": "ExpressionStatement",
                  "src": "9536:16:48"
                }
              ]
            },
            "documentation": null,
            "id": 9669,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9618,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9617,
                  "name": "requireIsInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9209,
                  "src": "8810:20:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8810:20:48"
              },
              {
                "arguments": null,
                "id": 9620,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9619,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "8835:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8835:12:48"
              }
            ],
            "name": "withdrawPayableFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9613,
                  "name": "_amountWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 9669,
                  "src": "8706:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8706:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9615,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9669,
                  "src": "8734:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9614,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "8734:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8696:96:48"
            },
            "returnParameters": {
              "id": 9621,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8848:0:48"
            },
            "scope": 9912,
            "src": "8654:905:48",
            "stateMutability": "nonpayable",
            "superFunction": 4341,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9703,
              "nodeType": "Block",
              "src": "9784:512:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9683,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "9832:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9684,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "9883:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9883:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9686,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "9963:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9963:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9688,
                        "name": "_toAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9671,
                        "src": "10022:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9689,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9673,
                        "src": "10052:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10117:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9693,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "10153:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "10153:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Par",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10153:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9696,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "10203:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "10203:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10203:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9699,
                            "name": "_amountPar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9675,
                            "src": "10254:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9690,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "10075:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "10075:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "10075:204:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9680,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "9794:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "9794:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9794:495:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9702,
                  "nodeType": "ExpressionStatement",
                  "src": "9794:495:48"
                }
              ]
            },
            "documentation": null,
            "id": 9704,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9678,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9677,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "9771:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9771:12:48"
              }
            ],
            "name": "depositPar",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9676,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9671,
                  "name": "_toAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9704,
                  "src": "9668:24:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9668:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9673,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9704,
                  "src": "9702:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9672,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9702:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9675,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9704,
                  "src": "9729:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9674,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9729:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9658:95:48"
            },
            "returnParameters": {
              "id": 9679,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9784:0:48"
            },
            "scope": 9912,
            "src": "9639:657:48",
            "stateMutability": "nonpayable",
            "superFunction": 4350,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9736,
              "nodeType": "Block",
              "src": "10431:557:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9716,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "10479:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9717,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "10530:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10530:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9719,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "10610:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9720,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10610:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10694:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 9722,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9706,
                        "src": "10744:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 9725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10809:4:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9726,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "10845:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "10845:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Par",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10845:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9729,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "10895:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30871,
                              "src": "10895:20:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 9731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10895:26:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9732,
                            "name": "_amountPar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9708,
                            "src": "10946:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9723,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "10767:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "10767:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "10767:204:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9713,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "10441:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5064,
                      "src": "10441:24:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,address,uint256,uint256,struct Types.AssetAmount memory)"
                      }
                    },
                    "id": 9734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10441:540:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9735,
                  "nodeType": "ExpressionStatement",
                  "src": "10441:540:48"
                }
              ]
            },
            "documentation": null,
            "id": 9737,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9711,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9710,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "10418:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10418:12:48"
              }
            ],
            "name": "depositParIntoDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9706,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9737,
                  "src": "10349:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9705,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10349:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9708,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9737,
                  "src": "10376:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10376:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10339:61:48"
            },
            "returnParameters": {
              "id": 9712,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10431:0:48"
            },
            "scope": 9912,
            "src": "10302:686:48",
            "stateMutability": "nonpayable",
            "superFunction": 4357,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9792,
              "nodeType": "Block",
              "src": "11204:629:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9753,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "11253:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9754,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "11304:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11304:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9756,
                        "name": "_fromAccountNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9739,
                        "src": "11363:18:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9757,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "11414:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11414:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9759,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9741,
                        "src": "11473:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11538:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9763,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "11575:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "11575:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Par",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11575:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9766,
                                "name": "_amountPar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9743,
                                "src": "11625:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9769,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "11644:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9768,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11645:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9767,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11639:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11639:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11625:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9775,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "11680:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "11680:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11680:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9778,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "11625:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9772,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "11650:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "11650:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9774,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11650:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9779,
                                "name": "_amountPar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9743,
                                "src": "11731:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9782,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "11750:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9781,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11751:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11745:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11745:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11731:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9786,
                              "name": "_amountPar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9743,
                              "src": "11760:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "11731:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11756:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9760,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "11496:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "11496:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "11496:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9789,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9745,
                        "src": "11799:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9750,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "11214:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "11214:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11214:612:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9791,
                  "nodeType": "ExpressionStatement",
                  "src": "11214:612:48"
                }
              ]
            },
            "documentation": null,
            "id": 9793,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9748,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9747,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "11191:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11191:12:48"
              }
            ],
            "name": "withdrawPar",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9746,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9739,
                  "name": "_fromAccountNumber",
                  "nodeType": "VariableDeclaration",
                  "scope": 9793,
                  "src": "11024:26:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11024:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9741,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9793,
                  "src": "11060:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11060:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9743,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9793,
                  "src": "11087:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9742,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11087:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9745,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9793,
                  "src": "11115:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9744,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "11115:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11014:159:48"
            },
            "returnParameters": {
              "id": 9749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11204:0:48"
            },
            "scope": 9912,
            "src": "10994:839:48",
            "stateMutability": "nonpayable",
            "superFunction": 4368,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9846,
              "nodeType": "Block",
              "src": "12031:674:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9807,
                        "name": "DOLOMITE_MARGIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2997,
                        "src": "12080:15:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9808,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "12131:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9809,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12131:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 9810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12217:1:48",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9811,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "12286:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9812,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12286:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9813,
                        "name": "_marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9795,
                        "src": "12345:9:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 9816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12410:5:48",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9817,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 31361,
                                "src": "12447:5:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 9818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30868,
                              "src": "12447:23:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$30868_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 9819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Par",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12447:27:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9820,
                                "name": "_amountPar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9797,
                                "src": "12497:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9823,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "12516:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12517:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12511:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12511:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12497:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9829,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "12552:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "12552:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Delta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12552:26:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "id": 9832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "12497:81:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9826,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "12522:5:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 9827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AssetReference",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30871,
                                "src": "12522:20:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_AssetReference_$30871_$",
                                  "typeString": "type(enum Types.AssetReference)"
                                }
                              },
                              "id": 9828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Target",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12522:27:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_AssetReference_$30871",
                                "typeString": "enum Types.AssetReference"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9838,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9833,
                                "name": "_amountPar",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9797,
                                "src": "12603:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 9836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "12622:2:48",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 9835,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12623:1:48",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 9834,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12617:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": "uint"
                                },
                                "id": 9837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12617:8:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12603:22:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 9840,
                              "name": "_amountPar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9797,
                              "src": "12632:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "12603:39:48",
                            "trueExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12628:1:48",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$30868",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$30871",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9814,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "12368:5:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 9815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 30880,
                          "src": "12368:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$30880_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 9842,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "12368:289:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9843,
                        "name": "_balanceCheckFlag",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9799,
                        "src": "12671:17:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                          "typeString": "contract IDolomiteMargin"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                          "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9804,
                        "name": "AccountActionLib",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5819,
                        "src": "12041:16:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccountActionLib_$5819_$",
                          "typeString": "type(library AccountActionLib)"
                        }
                      },
                      "id": 9806,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5157,
                      "src": "12041:25:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IDolomiteMargin_$24693_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_struct$_AssetAmount_$30880_memory_ptr_$_t_enum$_BalanceCheckFlag_$5841_$returns$__$",
                        "typeString": "function (contract IDolomiteMargin,address,uint256,address,uint256,struct Types.AssetAmount memory,enum AccountBalanceLib.BalanceCheckFlag)"
                      }
                    },
                    "id": 9844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12041:657:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9845,
                  "nodeType": "ExpressionStatement",
                  "src": "12041:657:48"
                }
              ]
            },
            "documentation": null,
            "id": 9847,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 9802,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9801,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38091,
                  "src": "12018:12:48",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12018:12:48"
              }
            ],
            "name": "withdrawParFromDefaultAccount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9795,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9847,
                  "src": "11887:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9794,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11887:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9797,
                  "name": "_amountPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 9847,
                  "src": "11914:18:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9796,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11914:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9799,
                  "name": "_balanceCheckFlag",
                  "nodeType": "VariableDeclaration",
                  "scope": 9847,
                  "src": "11942:52:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                    "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9798,
                    "name": "AccountBalanceLib.BalanceCheckFlag",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5841,
                    "src": "11942:34:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BalanceCheckFlag_$5841",
                      "typeString": "enum AccountBalanceLib.BalanceCheckFlag"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11877:123:48"
            },
            "returnParameters": {
              "id": 9803,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12031:0:48"
            },
            "scope": 9912,
            "src": "11839:866:48",
            "stateMutability": "nonpayable",
            "superFunction": 4377,
            "visibility": "external"
          },
          {
            "body": {
              "id": 9860,
              "nodeType": "Block",
              "src": "12790:65:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9855,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38107,
                            "src": "12836:3:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 9856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "12836:9:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9850,
                            "name": "WRAPPED_PAYABLE_TOKEN",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9193,
                            "src": "12800:21:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$4964",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 9853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "deposit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4933,
                          "src": "12800:29:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 9854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "12800:35:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                          "typeString": "function (uint256) pure returns (function () payable external)"
                        }
                      },
                      "id": 9857,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12800:46:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                        "typeString": "function () payable external"
                      }
                    },
                    "id": 9858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12800:48:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9859,
                  "nodeType": "ExpressionStatement",
                  "src": "12800:48:48"
                }
              ]
            },
            "documentation": null,
            "id": 9861,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_wrap",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9848,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12778:2:48"
            },
            "returnParameters": {
              "id": 9849,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12790:0:48"
            },
            "scope": 9912,
            "src": "12764:91:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9891,
              "nodeType": "Block",
              "src": "12896:218:48",
              "statements": [
                {
                  "assignments": [
                    9865
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9865,
                      "name": "wrappedPayableToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 9891,
                      "src": "12906:25:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWETH_$4964",
                        "typeString": "contract IWETH"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 9864,
                        "name": "IWETH",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4964,
                        "src": "12906:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH_$4964",
                          "typeString": "contract IWETH"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9867,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 9866,
                    "name": "WRAPPED_PAYABLE_TOKEN",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9193,
                    "src": "12934:21:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWETH_$4964",
                      "typeString": "contract IWETH"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12906:49:48"
                },
                {
                  "assignments": [
                    9869
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9869,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 9891,
                      "src": "12965:11:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9868,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12965:4:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9876,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9873,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 38275,
                            "src": "13017:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DepositWithdrawalProxy_$9912",
                              "typeString": "contract DepositWithdrawalProxy"
                            }
                          ],
                          "id": 9872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "13009:7:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 9874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13009:13:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9870,
                        "name": "wrappedPayableToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9865,
                        "src": "12979:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH_$4964",
                          "typeString": "contract IWETH"
                        }
                      },
                      "id": 9871,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4954,
                      "src": "12979:29:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 9875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12979:44:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12965:58:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9880,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9869,
                        "src": "13062:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 9877,
                        "name": "wrappedPayableToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9865,
                        "src": "13033:19:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWETH_$4964",
                          "typeString": "contract IWETH"
                        }
                      },
                      "id": 9879,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4947,
                      "src": "13033:28:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 9881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13033:36:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9882,
                  "nodeType": "ExpressionStatement",
                  "src": "13033:36:48"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9888,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9869,
                        "src": "13100:6:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9883,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "13079:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13079:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 9887,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sendValue",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 37846,
                      "src": "13079:20:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$bound_to$_t_address_payable_$",
                        "typeString": "function (address payable,uint256)"
                      }
                    },
                    "id": 9889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13079:28:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9890,
                  "nodeType": "ExpressionStatement",
                  "src": "13079:28:48"
                }
              ]
            },
            "documentation": null,
            "id": 9892,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_unwrapAndSend",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9862,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12884:2:48"
            },
            "returnParameters": {
              "id": 9863,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12896:0:48"
            },
            "scope": 9912,
            "src": "12861:253:48",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9910,
              "nodeType": "Block",
              "src": "13195:102:48",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 9906,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "13279:3:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 9907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13279:10:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9902,
                                "name": "_marketId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9894,
                                "src": "13257:9:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9900,
                                "name": "DOLOMITE_MARGIN",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2997,
                                "src": "13219:15:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                                  "typeString": "contract IDolomiteMargin"
                                }
                              },
                              "id": 9901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getMarketTokenAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24229,
                              "src": "13219:37:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (uint256) view external returns (address)"
                              }
                            },
                            "id": 9903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13219:48:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 9899,
                          "name": "IERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37552,
                          "src": "13212:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20_$37552_$",
                            "typeString": "type(contract IERC20)"
                          }
                        },
                        "id": 9904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13212:56:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$37552",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 9905,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 37497,
                      "src": "13212:66:48",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 9908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13212:78:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 9898,
                  "id": 9909,
                  "nodeType": "Return",
                  "src": "13205:85:48"
                }
              ]
            },
            "documentation": null,
            "id": 9911,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getSenderBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9894,
                  "name": "_marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 9911,
                  "src": "13147:17:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9893,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13147:7:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13146:19:48"
            },
            "returnParameters": {
              "id": 9898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9897,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9911,
                  "src": "13189:4:48",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9896,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "13189:4:48",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13188:6:48"
            },
            "scope": 9912,
            "src": "13120:177:48",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 9913,
        "src": "1733:11566:48"
      }
    ],
    "src": "595:12705:48"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.23",
  "updatedAt": "2025-06-22T04:01:53.629Z",
  "devdoc": {
    "author": "Dolomite",
    "details": "Contract for depositing or withdrawing to/from Dolomite easily. This lowers gas costs on Arbitrum by minimizing     callData",
    "methods": {},
    "title": "DepositWithdrawalProxy"
  },
  "userdoc": {
    "methods": {}
  }
}